我试图使用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)
任何人都知道我为什么会收到此错误以及如何解决此问题?
答案 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),))