Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python MySQL插入行为_Python_Mysql_Mysql Python_Sql Insert - Fatal编程技术网

Python MySQL插入行为

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

我相信我在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 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行之后的“
    打印”没有被打印?