python sqlite3 executemany_python – SQLite executemany的问题

我在以下代码中找不到我的错误.当它运行时,为行提供了类型错误:cur.executemany(sql%itr.next())=> ‘函数只需2个参数(给定1个),

import sqlite3

con = sqlite3.connect('test.sqlite')

cur = con.cursor()

cur.execute("create table IF NOT EXISTS fred (dat)")

def newSave(className, fields, objData):

sets = []

itr = iter(objData)

if len(fields) == 1:

sets.append( ':' + fields[0])

else:

for name in fields:

sets.append( ':' + name)

if len(sets)== 1:

colNames = sets[0]

else:

colNames = ', '.join(sets)

sql = " '''insert into %s (%s) values(%%s)'''," % (className, colNames)

print itr.next()

cur.executemany(sql % itr.next())

con.commit()

if __name__=='__main__':

newSave('fred', ['dat'], [{'dat':1}, {'dat':2}, { 'dat':3}, {'dat':4}])

我很感激你的想法.

最佳答案 就像它说的那样,executemany有两个参数.不要使用%自己插入字符串值,而应该传递sql和值,并让db适配器引用它们.

sql = " '''insert into %s (%s) values(%%s)'''," % (className, colNames)

cur.executemany(sql, itr.next())

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值