安装pymysql
pip install pymysql
import pymysql as pml
创建数据库连接
pymysql.connect()
常用参数:
host: 数据库地址
port: 端口号
user: 用户名
password: 密码
database: 需要打开的数据库,不指定,则建立与数据库的连接,在sql语句中指定
charset: 编码类型
use_unicode :是否使用双字节编码
conn = pml.connect(host='127.0.0.1',port = 3306,user='root',password='123456',database='mytest',charset='utf8')
读取数据方法1
conn.select_db() 设定当前查询的默认数据库
conn.cursor() 返回查询游标,用于执行查询
conn.close() 关闭连接
创建游标
cur.execute(sql,args=None) 执行查询的语句,和查询语句中的参数列表
cur.executemany(sql,args=None) 执行多条语句,比如insert等
cur.fetchall() 获取全部的查询结果
cur.fetchone() 获取下一条记录
cur.fetchmany(size) 获取指定条记录
cur = conn.cursor()
定义查询语句
sql = """
select *
from babyinfo
limit 5;
"""
执行查询
cur.execute(sql)
5
查看结果
cur.fetchall()
(('2757', datetime.date(2013, 3, 11), '1'),
('415971', datetime.date(2012, 11, 11), '0'),
('1372572', datetime.date(2012, 1, 30), '1'),
('10339332', datetime.date(2011, 9, 10), '0'),
('10642245', datetime.date(2013, 2, 13), '0'))
读取方法2
使用pandas读取
import pandas as pd
pd.read_sql(sql,conn)
user_id | birthday | gender | |
---|---|---|---|
0 | 2757 | 2013-03-11 | 1 |
1 | 415971 | 2012-11-11 | 0 |
2 | 1372572 | 2012-01-30 | 1 |
3 | 10339332 | 2011-09-10 | 0 |
4 | 10642245 | 2013-02-13 | 0 |
定义pandas连接函数
pandas.read_sql(sql, con, index_col=None, coerce_float=True, params=None, parse_dates=None, columns=None, chunksize=None)
sql :查询字符串
con :连接器
index_col :作为index的列名列表
coerce_float :是否将所有数字格式的列,转换为float类型
params : 传入con.execute() 的其他参数字典
parse_dates : 需要转换为日期的列名列表,或{column_name: format string}字典
chunksize :是否返回迭代器,每次取chunksize条数据
def con_mysql(sql):
"""
sql:查询语句
返回:查询结果,dataframe
"""
from pandas import read_sql
from pymysql import connect
conn = connect(host='127.0.0.1',port = 3306,user='root',password='123456',database='mytest',charset='utf8')
df=read_sql(sql,conn)
# 关闭数据库连接
conn.close()
return df
关闭连接
cur.close()
conn.close()