#coding=utf-8
import MySQLdb
conn= MySQLdb.connect(
host='localhost',
port = 3306,
user='root',
passwd='xuteng',
db ='test',
)
cur = conn.cursor()
#jsonArray:传入的json数组,每个字段名后面跟值,不一定要填全。例:
# jsonArray = [{'sid':'1', 'sname':'xuteng','gender':'hello','birthday':'1995-08-31','address':'hubei'},
# {'sid':'2', 'sname':'xuteng','birthday':'1995-08-31','address':'hubei'},
# {'sid':'3', 'sname':'xuteng','gender':'hello','birthday':'1995-08-31'}]
def insertMap(jsonArray,tableName):
for json in jsonArray:#遍历每一个子json 下面是为每一个json拼接sql 并执行
preSql = "insert into "+tableName+" (" #前一段拼接字段
subSql ="values(" #后一段拼接字段
exc = () #作为execute的参数值,这是一个tuble类型
for x in json:# 取出每一个子json的key和value值
preSql += x + "," #拼接前面sql的key值
subSql += "%s," #拼接后面sql的value数量
exc = exc + (json[x],)#每次 给exc添加新的值tuble,注意后面的“,”号不能少,否则不能识别为一个tuble
preSql = preSql[0:preSql.__len__()-1] + ")"#去掉后面的“,”再添加“)”
subSql = subSql[0:subSql.__len__()-1] + ")"#去掉后面的“,”再添加“)”
sql = preSql+subSql #前后相加成一个完整的sql
print sql
print exc
cur.execute(sql,exc) #将拼接好的sql和exc作为传入参数 执行
cur.close()
conn.commit()
conn.close()
当传入的是:jsonArray = [{‘sid’:’1’, ‘sname’:’xuteng’,’gender’:’hello’,’birthday’:’1995-08-31’,’address’:’hubei’}]
那么拼接的sql:insert into students (gender,sname,address,birthday,sid)values(%s,%s,%s,%s,%s)
拼接的exc:(‘hello’, ‘xuteng’, ‘hubei’, ‘1995-08-31’, ‘1’)
如果成功那么数据库将会插入这一条数据
在新py文件中引用这个方法
插入情况
本文介绍了一种使用 Python 向 MySQL 数据库批量插入 JSON 数据的方法。通过定义 insertMap 函数,可以灵活地处理不同结构的 JSON 数据,并自动生成 SQL 插入语句,有效地提高了数据插入效率。
3620

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



