Python 将字典和变量列表插入表中
我有一长串上述形式的词典。Python 将字典和变量列表插入表中,python,mysql,python-2.7,pymysql,Python,Mysql,Python 2.7,Pymysql,我有一长串上述形式的词典。 我有两个固定变量 lst = [{'Fruit':'Apple','HadToday':2},{'Fruit':'Banana','HadToday':8}] 我希望将此信息插入到mysql表中 我现在是怎么做的 person = 'Sam' date = datetime.datetime.now() 这是一种绕过循环的方法,因为person和date变量是常量。我试过了 for item in lst: item['Person'] = person
我有两个固定变量
lst = [{'Fruit':'Apple','HadToday':2},{'Fruit':'Banana','HadToday':8}]
我希望将此信息插入到mysql
表中
我现在是怎么做的
person = 'Sam'
date = datetime.datetime.now()
这是一种绕过循环的方法,因为person和date变量是常量。我试过了
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()
TypeError:格式字符串的参数不足
这里的问题是,它试图将所有的
lst
应用到%(水果)s
中,而%(hadtoway)s)没有留下任何内容
如果您有“Tim O'Molligan”这样的名称,则不应通过将固定值硬编码到语句中来解决问题,最好让db处理正确的格式
不是mysql,但你明白了要点:-一周前我自己就学会了这一点;o)
可能最干净的方法是使用
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()
和使用
cursor.execute("SET @myname = %s", (person,))
cursor.execute("SET @mydate = %s", (datetime.datetime.now(),))
我对语法不是百分之百的了解,但我希望你能理解。如果有拼写错误,请注释/编辑答案。当检测到INSERT语句时,executemany会创建多行INSERT语句,并将每个子列表映射到一个值项。这要求每个插入的列有一个值。您可以简单地更新列表或实现自己的格式化功能,以处理类似于
cursor.executemany("""
INSERT INTO myTable (Person,Date,Fruit,HadToday)
VALUES (@myname, @mydate, %(Fruit)s, %(HadToday)s)""", lst)