蟒蛇& MySQLdb TypeError('并非在字符串格式化期间转换所有参数',)

时间:2015-08-18 05:28:51

标签: python mysql

我一直在谷歌上搜索,无法解决我的问题。

我有许多查询在我的代码的早期部分使用参数,但在我之前的情况下,我只是传递字符串。我也知道我的查询确实有效,因为我在Sequel Pro中尝试过它。

然后这一切都落在了这段代码上:

    CA = 'CA10'
    Rank = 5
    CreateTempTable2 = "CREATE TEMPORARY TABLE IF NOT EXISTS BadTranscripts AS " + \ 
         "(SELECT DISTINCT Transcript FROM Exon_InDelCons X, Exons E2, EnsSequences G WHERE " + \
         "CA = %s AND (Type = 'inserted' OR Type = 'deleted') AND Length > 11 " + \
         "AND X.Transcript = E2.EnsTranscriptId AND E2.Rank < %s " + \
         "AND X.Exon = E2.EnsExonId AND E2.EnsParentId = G.GenomicEnsId)"
    args2 = CA, Rank
    try:
      cursor.execute(CreateTempTable2, args2)
      cursor.connection.autocommit(True)
    except Exception, e:
       print "Can't create Temp Table BadTranscripts", repr(e)

CA是一个字符串,Rank是一个整数。

当我运行此代码时,我收到错误:

TypeError('not all arguments converted during string formatting',)

如果有助于我在Mac OSX10.9.5上运行python2.7和MySQL Server 感谢您的帮助!

3 个答案:

答案 0 :(得分:0)

查看是否更改

args2 = CA, Rank

args2 = [CA, Rank]

完全有帮助。并查看此SO answer

答案 1 :(得分:0)

糟糕!我发现我的问题实际上是在以下查询中,我只是使用了不正确的变量名称!

所以上面的查询没有问题 - 它确实有效。

感谢所有回复的人!

答案 2 :(得分:-1)

回答,因为我没有足够的声誉来发表评论。你可以报告在cursor.execute之前替换&#39;%s之后会发生什么?

尝试做

CreateTempTable2 %(CA, Rank)