Python3将字典内容存入MySQL数据库

1.背景

     项目须要,用python实现了将字典内容存入本地的mysql数据库。

比方说有个字典dic={"a":"b","c":"d"},存入数据库效果图例如以下:


2.代码

  
'''
Insert items into database

@author: hakuri
'''
import MySQLdb

def InsertData(TableName,dic):
   
   try:
    conn=MySQLdb.connect(host='localhost',user='root',passwd='****',db='test',port=3306)  #链接数据库
    cur=conn.cursor()
    COLstr=''   #列的字段
    ROWstr=''  #行字段
    
    ColumnStyle=' VARCHAR(20)'
    for key in dic.keys():
         COLstr=COLstr+' '+key+ColumnStyle+','    
         ROWstr=(ROWstr+'"%s"'+',')%(dic[key])

    #推断表是否存在,存在运行try。不存在运行except新建表,再insert
    try:
      cur.execute("SELECT * FROM  %s"%(TableName))
      cur.execute("INSERT INTO %s VALUES (%s)"%(TableName,ROWstr[:-1]))
      
    except MySQLdb.Error,e:             
      cur.execute("CREATE TABLE %s (%s)"%(TableName,COLstr[:-1]))
      cur.execute("INSERT INTO %s VALUES (%s)"%(TableName,ROWstr[:-1]))
    conn.commit()
    cur.close()
    conn.close()

   except MySQLdb.Error,e:
      print "Mysql Error %d: %s" % (e.args[0], e.args[1])        


if __name__=='__main__':
    dic={"a":"b","c":"d"}
    InsertData('testtable',dic)
组装SQL代码
table_name = 'tableName'  #表名
sql_key_str = ''  #用于数据库创建语句
sql_key = ''  #数据库行字段
sql_value = ''  #数据库值
columnStyle = ' VARCHAR(200)'  #数据库字段类型

for key in dict.keys():
    sql_key_str = sql_key_str + ' ' + key + columnStyle + ','
    sql_value = (sql_value + '"%s"' + ',') %(dict[key])
    sql_key = sql_key + ' ' + key + ','

try:
    self.cursor.execute("SELECT * FROM %s" %(table_name))  #先执行一个表的查询语句,如果表不存在执行except
    self.cursor.execute("INSERT INTO %s (%s) VALUES (%s)" % (table_name,sql_key[:-1],sql_value[:-1]))  #字符串截取去掉末尾‘,’
    self.dbc.commit()  #提交当前事务
except pymysql.Error:
    self.cursor.execute("CREATE TABLE %s (%s)"%(table_name,sql_key_str[:-1]))  #如果查询表不存在则创建一张新表
    self.cursor.execute("INSERT INTO %s (%s) VALUES (%s)" % (table_name,sql_key[:-1],sql_value[:-1]))
    self.dbc.rollback()  #报错时事务回滚
finally:
    self.cursor.close()  #关闭游标对象
    self.dbc.close()  #关闭数据库连接


文章参考:

https://www.cnblogs.com/brucemengbm/p/6745039.html






评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值