【问题标题】:Quickest way to dump Python dictionary (dict) object to a MySQL table?将 Python 字典(dict)对象转储到 MySQL 表的最快方法?
【发布时间】:2010-04-09 22:03:22
【问题描述】:

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

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

每个字段都有括号 [] 和 'None' 值用于 NULLS 和 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?

【问题讨论】:

    标签: python mysql dictionary


    【解决方案1】:

    假设您已安装 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': ['1', 'K', abc, 'xyz', None, None, None], '2': ['2' , 'K', efg, 'xyz', None, None, None], '3': ['3', 'K', ijk, 'xyz', None, None, None]} 如何将此数据插入MySQL?
    • sql = "INSERT INTO mytable (a,b,c,d,e,f,g) 值 (%s,%s,%s,%s,%s,%s,% s);" ... cursor.executemany(sql, list(data)) ...
    【解决方案2】:

    【讨论】:

      【解决方案3】:

      这可能是重复的,或者可以通过这个帖子来回答 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}
      

      我们得到如下截图所示的输出。请注意,这是一个简单的示例,需要进行完整性检查,并且可以进行修改以进行批量更新(使用 dict 的 dict)等。

      【讨论】:

      猜你喜欢
      • 2023-03-20
      • 2021-02-17
      • 1970-01-01
      • 2017-10-07
      • 2018-11-02
      • 1970-01-01
      • 2020-06-05
      • 1970-01-01
      • 2018-08-03
      相关资源
      最近更新 更多