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

4万+

被折叠的 条评论
为什么被折叠?



