将数据框值作为参数添加到SQL查询

时间:2018-09-20 09:17:50

标签: python postgresql pandas

我正在尝试遍历数据帧并从单个列中获取值以用作sql查询中的参数。

for index,frame in df1.iterrows():

      sql = "select * from issuers where column_1 = %s;"
      cur.execute(sql, frame['column_1'])
      row = cur.fetchone()
      id = row[0]
      print id

但是我遇到了以下错误

  

“ TypeError:在字符串格式化期间并非所有参数都已转换”

我该如何解决?如果需要添加多个参数,该怎么办?

1 个答案:

答案 0 :(得分:1)

代替此:

cur.execute(sql, frame['column_1'])

尝试一下:

cur.execute(sql, [frame['column_1']])

execute的第二个参数是一个列表,其中包含要插入sql的所有值。

要插入多个值,请使用以下内容:

sql = "select * from issuers where column_1 = %s and column_2 = %s;"
cur.execute(sql, ["val1", "val2"])

有关更多信息,请参阅documentation

编辑

以下是INSERT INTO在SQL中的示例。

sql = "INSERT INTO user (firstname, lastname) VALUES (%s, %s)"
cur.execute(sql, ["John", "Doe"])