Python 2.7 带命名占位符的python sqlite3.executemany()?

Python 2.7 带命名占位符的python sqlite3.executemany()?,python-2.7,sqlite,Python 2.7,Sqlite,这项工作: ss = 'insert into images (file_path) values(?);' dddd = (('dd1',), ('dd2',)) conn.executemany(ss, dddd) 但是,这并不是: s = 'insert into images (file_path) values (:v)' ddddd = ({':v': 'dd11'}, {':v': 'dd22'}) conn.executemany(s, ddddd) Traceback (mo

这项工作:

ss = 'insert into images (file_path) values(?);'
dddd = (('dd1',), ('dd2',))
conn.executemany(ss, dddd)
但是,这并不是:

s = 'insert into images (file_path) values (:v)'
ddddd = ({':v': 'dd11'}, {':v': 'dd22'})
conn.executemany(s, ddddd)
Traceback (most recent call last):
  File "/Users/Wes/.virtualenvs/ppyy/lib/python2.7/site-packages/IPython/core/interactiveshell.py", line 3035, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)
  File "<ipython-input-31-a999de59f73b>", line 1, in <module>
    conn.executemany(s, ddddd)
ProgrammingError: You did not supply a value for binding 1.
s='插入图像(文件路径)值(:v)'
ddddd=({:v':'dd11'},{:v':'dd22'})
控制室执行室(s,DDD)
回溯(最近一次呼叫最后一次):
文件“/Users/Wes/.virtualenvs/ppyy/lib/python2.7/site packages/IPython/core/interactiveshell.py”,第3035行,运行代码
exec(代码对象、self.user\u全局、self.user\n)
文件“”,第1行,在
控制室执行室(s,DDD)
编程错误:您没有为绑定1提供值。
我想知道是否可以在executemany中使用命名参数,如果可以,如何使用

at第11.13.3节一般讨论参数,但没有讨论为其他类型的.executexx()描述的两种类型的参数


我已签出与ExecuteMy无关的属性。

参数名中没有

>>> s = 'insert into images (file_path) values (:v)'
>>> ddddd = ({'v': 'dd11'}, {'v': 'dd22'})
>>> conn.executemany(s, ddddd)
<sqlite3.Cursor object at 0x0000000002C0E500>
>>> conn.execute('select * from images').fetchall()
[(u'dd11',), (u'dd22',)]
>>s='插入图像(文件路径)值(:v)'
>>>ddddd=({'v':'dd11'},{'v':'dd22'})
>>>控制室执行室(s,DDD)
>>>conn.execute('select*from images').fetchall()
[(u'dd11',),(u'dd22',)]

参数名中没有

>>> s = 'insert into images (file_path) values (:v)'
>>> ddddd = ({'v': 'dd11'}, {'v': 'dd22'})
>>> conn.executemany(s, ddddd)
<sqlite3.Cursor object at 0x0000000002C0E500>
>>> conn.execute('select * from images').fetchall()
[(u'dd11',), (u'dd22',)]
>>s='插入图像(文件路径)值(:v)'
>>>ddddd=({'v':'dd11'},{'v':'dd22'})
>>>控制室执行室(s,DDD)
>>>conn.execute('select*from images').fetchall()
[(u'dd11',),(u'dd22',)]
显示
execute()
只是构造一个单元素列表并调用
executemany()
,因此问题不在于
executemany()
本身;使用
execute()
,相同的调用失败:

因此,您必须使用
ddddd=({'v':'dd11'},{'v':'dd22'})
显示
executemany()
只是构造一个单元素列表并调用
executemany()
,因此问题不在于
executemany()
本身;使用
execute()
,相同的调用失败:


所以你必须使用
ddddd=({'v':'dd11'},{'v':'dd22'})

很抱歉我不能给你们两个打对号。很抱歉我不能给你们两个打对号。
# And this is the named style:
cur.execute("select * from people where name_last=:who and age=:age", {"who": who, "age": age})