加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – SQLite executemany的问题

发布时间:2020-12-20 11:11:11 所属栏目:Python 来源:网络整理
导读:我在以下代码中找不到我的错误.当它运行时,为行提供了类型错误:cur.executemany(sql%itr.next())= ‘函数只需2个参数(给定1个), import sqlite3con = sqlite3.connect('test.sqlite')cur = con.cursor()cur.execute("create table IF NOT EXISTS fred (dat
我在以下代码中找不到我的错误.当它运行时,为行提供了类型错误: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)''',colNames)
cur.executemany(sql,itr.next())

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读