Python MySQL插入行为
我相信我在MySQLdb如何处理空字符串插入方面遇到了问题。例如,在我的insert语句中,值列表中的最后一个参数可能是空字符串。以下是我尝试执行查询前的值列表:Python MySQL插入行为,python,mysql,mysql-python,sql-insert,Python,Mysql,Mysql Python,Sql Insert,我相信我在MySQLdb如何处理空字符串插入方面遇到了问题。例如,在我的insert语句中,值列表中的最后一个参数可能是空字符串。以下是我尝试执行查询前的值列表: before: ('FOUND', 'noise', 'NA', 'NA', 'NA', 'NA', 'NA', 'NA', 'NA', 'NA', 'NA', 'noise NA NA NA NA NA NA NA NA NA', 'FOUND', '') Error: not all arguments converted d
before: ('FOUND', 'noise', 'NA', 'NA', 'NA', 'NA', 'NA', 'NA', 'NA', 'NA', 'NA', 'noise NA NA NA NA NA NA NA NA NA', 'FOUND', '')
Error: not all arguments converted during string formatting
我还尝试用None
和[None]
替换空字符串,但运气不好
这是我的密码:
qry = "insert into golden_table (topic, week1, week2, week3, week4, week5, week6, week7, week10, week11, week12, clust_list, nGram, hash_tag) values ('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s')"
try:
for k in gt:
a = ((k[0],) + tuple(gt[(k[0], k[1], k[2])]))
b = tuple([str(reduce(lambda x,y: x+' '+y, gt[(k[0], k[1], k[2])]))])
if k[2] == '':
c = (k[1], '')
else:
c = (k[1], k[2])
print "before: ", (a+b+c)
qry = qry % (a+b+c)
print "after: ", qry
cur.execute(qry)
con.commit()
谢谢你的帮助 该错误与MySQL无关(您可能在提出问题后意识到这一点)。您只需在
(a+b+c)
中有许多元素,这些元素与原始qry
中的%s
占位符的数量不同。如果您在第一次打印之前添加d=a+b+c
,然后在下面两行中使用d
而不是(a+b+c)
,您会得到什么?我应该注意,如果我将打印的查询字符串复制并粘贴到mysql中,它将毫无问题地执行插入。。。问题是MySQLdb…是的,当然可以复制和粘贴。问题在于您在qry=qry%(a+b+c)
中使用的Python语法cur.execute
几乎肯定没有str格式化
漏洞。我不确定我是否理解它的问题所在?当我在执行qry=qry%(a+b+c)
后打印qry
时,我有一个有效的SQL语句,可以复制并粘贴到MySQL缓冲区中——如果我知道更多编程技巧,我应该通过管道将所有查询“破解”到MySQL缓冲区中!哈哈哈,如果那行行正常工作,那么为什么“,”,qry行之后的“打印”没有被打印?