将列表中的元素插入mysql数据库时出现TypeError

时间:2017-07-28 15:56:01

标签: python mysql-python

我试图使用python,mysql数据库和mysqldb将列表中的每个值插入数据库。数据库中此列表中所有元素的类型为VARCHAR。

但是我收到了这个错误:

TypeError:并非在字符串格式化期间转换所有参数

列表理解是删除空字符串,为了尝试修复当前问题,我尝试将每个元素转换为字符串,但它没有工作。我也尝试将其转换为查询功能中的字符串,但也没有工作。

值为-3.89738e-05

类型(值)是"类型' str'"

class card :

    def __init__ (self, rank, suit) :

        self.rank = rank # cards numbers
        self.suit = suit # cards characters Diamonds, Clubs, Hearts, Spades

    def getRank (self):

        return self.rank

    def getSuit (self):

        return self.suit

def main():

    cards = open (input ("file? "))
    cardsListObj = []

    for i in cards:

        cardObj = card (i.split () [0], i.split () [1])
        cardsListObj.append (cardObj)

任何人都知道我为什么会收到此错误以及如何解决此问题?

1 个答案:

答案 0 :(得分:1)

当你执行参数化查询时,它期望参数以可迭代的方式传递(我在评论中添加的元组)。当您传递多个参数时,您将看到没有问题,因为它会将这些参数解压缩到您提供的占位符中。但是,当您传递单个字符串时,它仍然可以在Python中迭代,因此它会尝试逐字符地将该字符串插入到预准备语句中。

for item in ('abc',):
    print item # prints whole string, for which you provided a placeholder

for item in 'abc':
    print item # prints the individual letters, but you only gave 1 placeholder

所以,你应该使用以下内容:

cursor.execute(sql_insert, (str(value),))