首先要将Python
和MySQL
进行连接,可以使用pymysql
或者MySQLdb
两个模块进行操作。MySQLdb
主要在Python2
中比较常用,但是在Python3
中使用pymysql
代替了MySQLdb
,所以就以pymysql
为例。代码如下:
# 使用pymysql进行连接:
import pymysql
def connection_sql(data):
db = pymysql.connect(host="localhost", user="root", password="password", database="database")
db_curs = db.cursor()
# 单条数据的插入:
insert_sql = """INSERT INTI form_name(field_1, field_2, field_3) VALUES (value_1, value_2, value_3);"""
try:
db_curs.execute(insert_sql)
db.commit()
print("ok")
except:
db.rollback()
print("insert error")
db.close()
# 这是分割线
----------------------------------------------------------------------------------------
# 多条数据的插入:
insert_sql = """INSERT INTI form_name(field_1, field_2, field_3) VALUES (%s, %s, %s);"""
data = data # 此处可能有点问题,具体需要看数据格式。
print(data)
"""如果data是通过生成器yield生成,则不需要对数据进行遍历。"""
try:
db_curs.executemany(insert_sql, data)
db.commit()
print("ok")
except:
db.rollback()
print("insert error")
db.close()
这是可以成功执行的,但是目前我并没有对语句进行优化操作,应该可以不用每一遍操作都遍历一遍insert_sql
,只对需要写入的数据进行遍历即可。
需要提前将数据处理成可以插入到MySQL
的格式:可以在代码中输出data
,看看其数据格式。
多条数据的写入,data
的数据格式需要为[[column_name1, column_name2, column_name3], [column_name1, column_name2, column_name3], [column_name1, column_name2, column_name3]]
。当数据量较多的时候,列表会占用很大的系统资源,可以使用循环或者生成器的方法来减少资源的占用。