Python %d格式:需要数字,而不是STR
当我使用python将数据大容量插入mysql时,即使我使用“%s”格式化每个单词,我仍然得到一个错误:“%d格式:需要一个数字,而不是STR” 代码:Python %d格式:需要数字,而不是STR,python,mysql,Python,Mysql,当我使用python将数据大容量插入mysql时,即使我使用“%s”格式化每个单词,我仍然得到一个错误:“%d格式:需要一个数字,而不是STR” 代码: 我通过重新理解错误解决了这个问题:“使用接近‘easy to fight’peak war’、‘133’、‘4’、‘2018-8-31:15’、‘1’’的正确语法,因为对于批量插入,这个%s不能用引号括起来,但是对于单次插入,它是可以的。显示您在这里尝试的代码#SQL插入语句 sql=“插入新浪(主题信息、阅读数量、热门、创建时间、状态)值('
我通过重新理解错误解决了这个问题:“使用接近‘easy to fight’peak war’、‘133’、‘4’、‘2018-8-31:15’、‘1’’的正确语法,因为对于批量插入,这个%s不能用引号括起来,但是对于单次插入,它是可以的。显示您在这里尝试的代码#SQL插入语句 sql=“插入新浪(主题信息、阅读数量、热门、创建时间、状态)值('%s'、'%s'、'%s'、'%s'、'%s')”)”一个元组或者列表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'), ('如懿传', 试一下执行sql语句 cursor.executemany(sql,T)#提交到数据库执行 db.commit()除了:#如果发生错误则回滚 MySQL的表具有预定义的列。确实没有在数字数据列中插入字符串。可以使用%d进行单行插入,但也可以使用%s,例如:“SQL=”INSERT into sa(topfo,rem,toot,creime,sus)\value(“%s',“%d',“%d',“%d',“%s',“%s”)“%\”('如果我说,'121,5,'2018-8-31:15,'1')@NoorJafri这都是字符串格式,在SQL调用之前完成。虽然OP给出了一个以
STR
结尾的错误(不像在我的试验中那样STR
),但错误消息看起来很像是来自字符串格式本身。而“%s”%42
工作正常,并给出与“%d”%42
(即“42”
)相同的结果。
# 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 | –