1、 利用 pymysql 模块(有时候会报错,不推荐)
pip install pymysql
# 导入pymysql模块
import pymysql
# 连接database
conn = pymysql.connect(host=“你的数据库地址”, user=“用户名”,password=“密码”,database=“数据库名”,charset=“utf8”)
# 得到一个可以执行SQL语句的光标对象
cursor = conn.cursor()
# 定义要执行的SQL语句
sql = """
CREATE TABLE USER1 (
id INT auto_increment PRIMARY KEY ,
name CHAR(10) NOT NULL UNIQUE,
age TINYINT NOT NULL
)ENGINE=innodb DEFAULT CHARSET=utf8;
"""
# 执行SQL语句
cursor.execute(sql)
# 关闭光标对象
cursor.close()
# 关闭数据库连接
conn.close()
# 导入pymysql模块
import pymysql
# 连接database
conn = pymysql.connect(host='localhost', user='root',password='123456',database='exam',charset='utf8')
# 得到一个可以执行SQL语句的光标对象
cursor = conn.cursor()
# 定义要执行的SQL语句
sql ='select * from goods'
# 执行SQL语句
cursor.execute(sql) # 执行sql语句后结果会保存到 cursor对象中,他是一个可迭代对象
print(list(cursor))
# 关闭光标对象
cursor.close()
# 关闭数据库连接
conn.close()
2、利用 sqlalchemy 模块(推荐使用)
pip install sqlalchemy
import pandas as pd
import pymysql
from sqlalchemy import create_engine
# 建立连接
db_info = {
'user':'root',
'password':'',
'host':'localhost',
'database':'pandas_test' # 这里我们事先指定了数据库,后续操作只需要表即可
}
# 推荐使用,可设置参数echo=True,会显示在加载数据库所执行的SQL语句
conn = create_engine('mysql+pymysql://%(user)s:%(password)s@%(host)s/%(database)s?charset=utf8' % db_info,
encoding='utf-8')
# 不推荐
# conn = pymysql.connect(host="localhost", user="root", passwd="", db="pandas_test", charset='utf8')
# 读取数据表格1
sql_1 = "select * from 成绩单1"
data_table_1 = pd.read_sql(sql_1, conn) #返回值是一个 pandas 的数据类型(DataFrame、Series)
print(data_table_1)
# 读取数据表格2
sql_2 = "select * from 成绩单2"
data_table_2 = pd.read_sql(sql_2,conn)
print(data_table_2)
处理后的 DataFrame 保存在 MYSQL中
df1
out:
姓名 学科 成绩 星座 离差标准化成绩 标准差标准化成绩 天秤 天蝎 射手 白羊 金牛
0 韩梅梅 数学 59.000000 白羊 0.487500 -0.638456 0 0 0 1 0
1 李雷 数学 59.000000 射手 0.487500 -0.638456 0 0 1 0 0
2 李莉 数学 60.000000 天蝎 0.500000 -0.598413 0 1 0 0 0
3 露西 数学 100.000000 金牛 1.000000 1.003288 0 0 0 0 1
5 韩梅梅 语文 95.000000 白羊 0.937500 0.803075 0 0 0 1 0
6 李雷 语文 95.000000 射手 0.937500 0.803075 0 0 1 0 0
8 露西 语文 51.000000 金牛 0.387500 -0.958796 0 0 0 0 1
10 张三 体育 80.333333 天秤 0.754167 0.215785 1 0 0 0 0
11 韩梅梅 英语 88.000000 白羊 0.850000 0.522777 0 0 0 1 0
12 李雷 英语 99.000000 射手 0.987500 0.963245 0 0 1 0 0
13 李莉 英语 93.000000 天蝎 0.912500 0.722990 0 1 0 0 0
14 露西 英语 20.000000 金牛 0.000000 -2.200114 0 0 0 0 1
# 保存为sql文件
df1.to_sql('after_processed', conn, index=False, if_exists='append')
"""
index=False, 舍弃原表的行索引
if_exists='append' 如果表存在使用 “添加” 的操作
"""