Python 读取MySQL

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'   如果表存在使用 “添加” 的操作
"""

          

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值