我试图将一个整数、一个字符串和一个列表作为单个记录插入到数据库中,但是我遇到了一个错误。
这是我的代码:
values=nprnd.randint(10, size=48) #NUMPY ARRAY
valuelist= map(None, values); #Convert to list
guid=''.join(random.choice(string.ascii_uppercase + string.digits) for x in range(20)) #Generate guid
for x in range(4):
var_string = ', '.join('?' * 48)
valuelist.insert(0,x)
valuelist.insert(0,ent_guid)
#50 coloums in table, guid, x and 48 randomly generated values
query_string = 'INSERT INTO schema1 VALUES (%s,%d,%s);' % (guid, x, var_string)
cursor.execute(query_string, valuelist)
我一直收到一条错误消息:
Traceback (most recent call last):
File "script.py", line 19, in <module>
cursor.execute(query_string, valuelist)
File "/Library/Python/2.7/site-packages/MySQL_python-1.2.4b4-py2.7-macosx-10.8-intel.egg/MySQLdb/cursors.py", line 184, in execute
query = query % db.literal(args)
我知道这个错误的原因(即使 SO 对同一个错误也有几个问题),但是我尝试过的解决方案都没有为我解决这个错误
任何帮助将不胜感激
最佳答案
我相信 MySQL-python 使用 printf 格式代码(例如 '%s')而不是 '?'对于占位符。尝试像这样设置 var_string
:
var_string = ', '.join(['%s'] * 48)
我也同意 Endophage valuelist
似乎太长了。我认为您不需要插入 al
和 ent_guid
。
插入时还需要在 guid 两边加上引号:
query_string = 'INSERT INTO schema1 VALUES (\'%s\',%d,%s);' % (guid, x, var_string)
关于python - 类型错误 : not all arguments converted during string formatting when inserting with parameters,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16172660/