python - 类型错误 : not all arguments converted during string formatting when inserting with parameters

标签 python mysql database

我试图将一个整数、一个字符串和一个列表作为单个记录插入到数据库中,但是我遇到了一个错误。

这是我的代码:

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 似乎太长了。我认为您不需要插入 alent_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/

相关文章:

python - 读取 csv 并导入数据表(Python)

Java MySQL DELETE语句问题

php - 如何从表中选择行相似但不完全相同的行以包含拼写错误?

sql - 如何将 postgres 数据库表的主键从账单号更改为账单号和购买日期列的年份部分(它是 oif 类型日期)?

mysql - 对多个表进行 SELECT 查询

python - 使用 PyInstaller 时出错

python - 运行主程序时每 5 分钟运行一次函数

mysql - 提取日期范围之间的点击次数

python - pytest-html 带有测试结果输出的自定义结果表

PHP5 MySql 和 PDO 异常