【发布时间】:2018-10-27 06:11:06
【问题描述】:
lst = [{'Fruit':'Apple','HadToday':2},{'Fruit':'Banana','HadToday':8}]
我有一长串上述表格的字典。
我有两个固定变量。
person = 'Sam'
date = datetime.datetime.now()
我希望将此信息插入到mysql 表中。
我现在是怎么做的
for item in lst:
item['Person'] = person
item['Date'] = date
cursor.executemany("""
INSERT INTO myTable (Person,Date,Fruit,HadToday)
VALUES (%(Person)s, %(Date)s, %(Fruit)s, %(HadToday)s)""", lst)
conn.commit()
这是他们的一种方法,它绕过循环,因为人员和日期变量是恒定的。我试过了
lst = [{'Fruit':'Apple','HadToday':2},{'Fruit':'Banana','HadToday':8}]
cursor.executemany("""
INSERT INTO myTable (Person,Date,Fruit,HadToday)
VALUES (%s, %s, %(Fruit)s, %(HadToday)s)""", (person,date,lst))
conn.commit()
TypeError: 格式字符串的参数不足
【问题讨论】:
-
当检测到 INSERT 语句时,executemany 创建一个多行 INSERT 语句并将每个子列表映射到一个 VALUE 项。这要求每个插入的列有一个值。您可以简单地更新列表或实现自己的格式化功能来处理您的需求,类似于github.com/PyMySQL/PyMySQL/blob/master/pymysql/cursors.py#L189
标签: python mysql python-2.7 pymysql