执行SQL查询时使用的是holCopg2

本教程将介绍执行SQL查询时使用的是holCopg2的处理方法,这篇教程是从别的地方看到的,然后加了一些国外程序员的疑问与解答,希望能对你有所帮助,好了,下面开始学习吧。

执行SQL查询时使用的是holCopg2 教程 第1张

问题描述

我正在尝试使用心理拷贝2将一个列表传递到postgres表中。我一直遇到一个异常:

  File "c:/Python27/Projects/Newsletter/newsletter.py", line 148, in <module>
insert_pg(listString)
  File "c:Python27ProjectsNewsletterpg.py", line 23, in insert_pg
 print('pggggg', error)
IOError: [Errno 0] Error

数据非常杂乱(请原谅),但这里有一小段代码。我正在从Newletter.py运行它:

if __name__ == '__main__':
dataList = [today, str(int(round(float(str(spxprice.replace(',', '')))))), str(int(round(float(spxchg)))), str(int(round(float(spxpchg)))), str(int(round(float(str(dowprice.replace(',', '')))))), dowpchg, str(int(round(float(dowchg)))), str(int(round(float(str(ndxprice.replace(',', '')))))), ndxpchg, str(int(round(float(ndxchg)))), ''.join(oilPrice[4]), ''.join(getOilChg), ''.join(getOilPct), dayName]

listString = ', '.join(dataList)

insert_pg(listString)

这是pg.py,我从以下位置导入INSERT_PG:

import psycopg2
from config import config
import sys


def insert_pg(thedata):
 sql = ("""insert into prices values (%s);""" % thedata)

 conn = None
 try:
  # read database configuration
  params = config()
  # connect to the PostgreSQL database
  conn = psycopg2.connect(**params)
  # create a new cursor
  cur = conn.cursor()
  # execute the INSERT statement
  cur.execute(sql)
  conn.commit()
  cur.close()
  print 'Success.'
 except (Exception, psycopg2.DatabaseError) as error:
  print('pggggg', error)
 finally:
  if conn is not None:
conn.close()

打印时SQL的输出:

不确定我在哪里做错了。数据库连接正常。有什么想法吗?

SQL

首先,您没有使用绑定变量,这是一种糟糕的做法,因为这可能导致推荐答案注入。您应该做的是:

cur.execute('INSERT INTO PRICES(col1, col2, ...) VALUES(%(val1)s, %(val2)s, ...)', kwargs)

其中kwargs是与列名和值对应的键/值对的字典。这才是正确的做法。

好了关于执行SQL查询时使用的是holCopg2的教程就到这里就结束了,希望趣模板源码网找到的这篇技术文章能帮助到大家,更多技术教程可以在站内搜索。