%d格式:必须为数字,而不是STR

时间:2018-08-31 07:58:05

标签: python mysql

当我使用python将数据批量插入mysql时,即使我使用'%s'格式化每个单词,我仍然收到错误:“%d格式:需要数字,而不是STR”。

代码:

# SQL 插入语句
sql = ("INSERT INTO sina(topic_info, read_num, top_hot,"
       " create_time, status)"
       " VALUES ('%s', '%s', '%s', '%s', '%s' )"
# 一个tuple或者list
T = ( ('易起鏖战 巅峰之战', 133, 4, '2018-8-31:15', '1'),
      ('向往的美食', 123, 2, '2018-8-31:15', '1'),
      ('发际线男孩表情包', 1223, 1, '2018-8-31:15', '1'),
      ('天坑鹰猎开播', 131, 3, '2018-8-31:15', '1'),
      ('如懿传', 121, 5, '2018-8-31:15', '1') )
try:
    # 执行sql语句
    cursor.executemany(sql, T)
    # 提交到数据库执行
    db.commit()
except:
    # 如果发生错误则回滚
    db.rollback()


# database details
| Field       | Type     | Null | Key | Default | Extra |
+-------------+----------+------+-----+---------+-------+ 
| topfo       | char(30) | NO   |     | NULL    |       | 
| rm          | int(11)  | YES  |     | NULL    |       | 
| tot         | int(11)  | YES  |     | NULL    |       | 
| creme       | char(20) | YES  |     | NULL    |       | 
| st*us       | char(10) | YES  |     | NULL    |       –

1 个答案:

答案 0 :(得分:0)

我通过重新理解以下错误解决了此问题:“在'易打'高峰战争附近使用正确的语法','133','4','2018-8-31:15','1' )”,因为对于批量插入,此%s不能用引号引起来,但对于单次插入是可以的。