如何将Python字典中的数据插入MySQL?

时间:2010-04-12 15:59:11

标签: python mysql dictionary

我操纵了MySQL的一些数据,结果字典“数据”(打印数据)显示如下:

{'1': ['1', 'K', abc, 'xyz', None, None, None, datetime.date(2009, 6, 18)],
 '2': ['2', 'K', efg, 'xyz', None, None, None, None],
 '3': ['3', 'K', ijk, 'xyz', None, None, None, datetime.date(2010, 2, 5, 16, 31, 2)]}

如何创建表并在MySQL表中插入这些值?换句话说,我如何将它们转储到MySQL或CSV?不确定如何处理datetime.date和None值。任何帮助表示赞赏。

3 个答案:

答案 0 :(得分:1)

datetime.date匹配DATE个字段,None变为NULL。将.executemany()dict.values()结合使用以执行INSERT。

答案 1 :(得分:1)

大多数符合dbapi标准的MySQL连接器会自动将Python的None转换为SQL的NULL和Python的datetime对象转换为SQL TIMESTAMP

实际上,您只需要打开与数据库的连接,获取游标,然后遍历执行插入的字典。但是,如果不知道您的架构,就不可能为您提供示例代码。

答案 2 :(得分:1)

这是一些创建MySQL数据库并插入一些数据的基本代码。

import MySQLdb
import datetime

THEHOST="localhost"
THEUSER="user"
THEPASSWD="passwd"
THEDB="database"

connection=MySQLdb.connect(
    host=THEHOST,user=THEUSER,passwd=THEPASSWD,db=THEDB)
cursor=connection.cursor()

abc,efg,ijk=1,2,3

data={'1': ['1', 'K', abc, 'xyz', None, None, None, datetime.date(2009, 6, 18)],
      '2': ['2', 'K', efg, 'xyz', None, None, None, None],
      '3': ['3', 'K', ijk, 'xyz', None, None, None,
            datetime.datetime(2010, 2, 5, 16, 31, 2)]}

sql='''\
CREATE TABLE IF NOT EXISTS temp (id int auto_increment primary key,
    field1 varchar(8),
    field2 int,
    field3 varchar(8),
    field4 bool,
    field5 varchar(8),
    field6 varchar(8),
    field7 datetime )'''

cursor.execute(sql)

sql='''\
INSERT INTO temp (id, field1, field2, field3, field4, field5, field6, field7)
VALUES (%s, %s, %s, %s, %s, %s, %s, %s)
'''
cursor.executemany(sql, data.values())