将Python字典快速导入MySQL表的最佳方法是什么?
我有一个字典对象。我用这个方法把数据导出了:
for alldata in data: # print all data to screen
print data[alldata]
每个字段都有方括号 [],并且用 'None' 来表示空值,日期值则是用 date.datetime 来表示。
我该怎么把这个字典的数据放到 MySQL 表里呢?谢谢!
打印出来的数据看起来像这样:
{'1': ['1', 'K', abc, 'xyz', None, None, None], '2': ['2', 'K', efg, 'xyz', None, None, None], '3': ['3', 'K', ijk, 'xyz', None, None, None]}
我该如何把这些数据插入到 MySQL 中呢?
3 个回答
0
这可能是之前某个问题的重复,或者可以通过这个帖子来回答:使用Python字典进行SQL插入语句
不过,为了回答你的问题,我在另一个问题上发过这个,现在也在这里重发一遍:
def ins_query_maker(tablename, rowdict):
keys = tuple(rowdict)
dictsize = len(rowdict)
sql = ''
for i in range(dictsize) :
if(type(rowdict[keys[i]]).__name__ == 'str'):
sql += '\'' + str(rowdict[keys[i]]) + '\''
else:
sql += str(rowdict[keys[i]])
if(i< dictsize-1):
sql += ', '
query = "insert into " + str(tablename) + " " + str(keys) + " values (" + sql + ")"
print(query) # for demo purposes we do this
return(query) #in real code we do this
对于一个字典
tab = {'idnumber': 1, 'fname': 'some', 'lname': 'dude', 'dob': '15/08/1947', 'mobile': 5550000914, 'age' : 70.4}
我们得到的输出如下面的截图所示。请注意,这只是一个简单的例子,需要进行一些合理性检查,并且可以修改以支持批量更新(使用字典的字典)等。
4
这个例子非常好,而且兼容性也很强。你可以在这里查看:http://code.activestate.com/recipes/457661-generate-sql-for-insertation-into-table-from-dicti/
13
假设你已经安装了 MySQLdb(mysql-python):
sql = "INSERT INTO mytable (a,b,c) VALUES (%(qwe)s, %(asd)s, %(zxc)s);"
data = {'qwe':1, 'asd':2, 'zxc':None}
conn = MySQLdb.connect(**params)
cursor = conn.cursor()
cursor.execute(sql, data)
cursor.close()
conn.close()