针对python3用户
先导入包,创建连接方式时的charset为utf8bm4
import pymysql
from pymysql import *
from sqlalchemy import create_engine
# 创建连接
conn = pymysql.connect(host='localhost',user='XXX',password='XXX',charset='utf8mb4')
# 创建游标
cursor = conn.cursor()
如果还没建库:
建库的时候设置库读取数据的编码为uft8
# 创建数据库的sql(如果数据库存在就不创建,防止异常)
# set utf8 和python中文字符编译代码相同
sql = "CREATE DATABASE IF NOT EXISTS 数据库名 character set utf8;"
# 执行创建数据库的sql
cursor.execute(sql)
如果已经建库:
sql_1='alter database 数据库名 character set utf8;'
cursor.execute(sql_1)
然后再写入数据,这里用dataframe举例:
首先设置引擎读取数据编码格式为utf8,不可为utf8bm4,否则会全盘报错。
# 创建引擎
yconnect = create_engine('mysql+pymysql://用户名:密码@localhost:端口/数据库名?charset=utf8')
# 写入数据
df.to_sql('表名', yconnect, schema='数据库名', if_exists='replace')
然后就导入成功了。
Ps: 建议在建库后再运行以下代码解决单元格输入数据长度超限的问题,当然你数据条都很短的话直接无视就好。
# fix: 1406, "Data too long for column
sql_2 ='SET @@global.sql_mode= "NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION";'
cursor.execute(sql_2)