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)
Python MySQL 插入后的主键ID
cursor.lastrowid
import MySQLdb
# get user input
name = raw_input("Please enter a name: ")
# connect
conn = MySQLdb.connect(host="localhost", user="nobody", passwd="nobody", conn="qestar", unix_socket="/tmp/mysql.sock")
# create a cursor
cursor = conn.cursor()
# execute SQL statement
cursor.execute("INSERT INTO test (nama) VALUES (%s)", name)
# get ID of last inserted record
print "ID of last record is ", int(cursor.lastrowid) #最后插入行的主键ID
print "ID of inserted record is ", int(conn.insert_id()) #最新插入行的主键ID,conn.insert_id()一定要在conn.commit()之前,否则会返回0
conn.commit()