将Python字典(dict)对象转储到MySQL表的最快方法?

时间:2010-04-09 22:03:23

标签: python mysql dictionary

我有一个dict对象。我使用这个来转储数据:

for alldata in data: # print all data to screen
    print data[alldata]

每个字段都有NULLS的括号[]和'无'值以及日期值的date.datetime。

如何将此dict转储到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 :(得分:11)

假设你安装了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()

答案 1 :(得分:4)

这个给出了一个非常好的例子和更兼容的例子。 http://code.activestate.com/recipes/457661-generate-sql-for-insertation-into-table-from-dicti/

答案 2 :(得分:1)

这可能是本文的副本,或者可以通过这篇文章回答 Using a Python dict for a SQL INSERT statement

然而,为了回答你的问题,我在另一个问题上发布了这个问题,我也在这里重新发布:

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}

我们得到输出,如下面的屏幕截图所示。请注意,这是一个简单的示例,需要进行健全性检查,并且可以针对批量更新进行修改(使用dicts的词典)等。

output of the code mentioned above