Python写入数据到MySQL

2,516 阅读1分钟

首先要将PythonMySQL进行连接,可以使用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]]。当数据量较多的时候,列表会占用很大的系统资源,可以使用循环或者生成器的方法来减少资源的占用。