代码之家  ›  专栏  ›  技术社区  ›  ThinkCode

如何将数据从python字典插入mysql?

  •  1
  • ThinkCode  · 技术社区  · 16 年前

    我操作了MySQL中的一些数据,结果字典“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.date(2010, 2, 5, 16, 31, 2)]}
    

    如何创建一个表并将这些值插入到MySQL表中?换句话说,我如何将它们转储到mysql或csv?不知道如何处理datetime.date和none值。感谢您的帮助。

    3 回复  |  直到 16 年前
        1
  •  1
  •   unutbu    16 年前

    下面是一些创建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())
    
        2
  •  1
  •   Ignacio Vazquez-Abrams    16 年前

    datetime.date 比赛 DATE 字段,以及 None 变成 NULL . 使用 .executemany() dict.values() 以便进行插入。

        3
  •  1
  •   jemfinch    16 年前

    大多数与DBAPI兼容的连接器到MySQL都会自动转换python的 None 到SQL的 NULL 还有巨蟒的 datetime 对象到SQL TIMESTAMP S.

    实际上,您只需要打开一个到数据库的连接,获取一个光标,然后在执行插入操作的字典上迭代。但是,如果不知道您的模式,就不可能给您提供示例代码。