pandas(2):Pandas文件读取——Pandas.read_sql()

一、函数原型

pandas.read_sql(sql, con, index_col=None,
	coerce_float=True, params=None,
	parse_dates=None, columns=None,
	chunksize=None)

二、常用参数说明

  • sql:SQL命令字符串
  • con:连接sql数据库的engine,一般可以用SQLalchemy或者pymysql之类的包建立
  • index_col: 选择某1列或几列作为index(或MultiIndex),字符串或字符串列表
  • coerce_float:非常有用,将数字形式的字符串直接以float型读入
  • parse_dates:将某一列日期型字符串转换为datetime型数据,与pd.to_datetime函数功能类似。可以直接提供需要转换的列名以默认的日期形式转换,也可以用字典的格式提供列名和转换的日期格式:
    比如{column_name: format string}(format string:"%Y:%m:%H:%M:%S")。
  • columns:要选取的列。一般没啥用,因为在sql命令里面一般就指定要选择的列了
  • chunksize:如果提供了一个整数值,那么就会返回一个generator,每次输出的行数就是提供的值的大小。

三、连接数据库方式——MySQL

①用sqlalchemy包构建数据库链接

import pandas as pd
from sqlalchemy import create_engine

# ‘mysql+pymysql://{用户名}:{密码}@{域名}:{端口号}/{数据库名}?charset=utf8’
con = create_engine('mysql+pymysql://root:123456@localhost:3306/data')
# sql脚本
sql = 'select * from sc'
# 把sql查询结果读取为数据框
df = pd.read_sql(sql,con)

封装数据库信息,格式化传入

db_info = {
    'user':'root',
    'password':'123456',
    'host':'localhost',
    'database':'data',
    'port':3306
}
con = create_engine('mysql+pymysql://%(user)s:%(password)s@%(host)s:%(port)d/%(database)s?charset=utf8' % db_info,encoding='utf-8')

②用DBAPI构建数据库链接

import pandas as pd
import pymysql

sql = 'select * from sc'
con = pymysql.connect(host='localhost',user='root',password='123456',database='data',port=3306,charset='utf8')
df = pd.read_sql(sql,con)

③将数据库敏感信息保存在文件中

  在桌面创建文件夹‘password’,在文件夹中创建文件‘root@mysql.txt’,文件写入数据库连接信息:
          mysql+pymysql://root:123456@localhost:3306/data
保存即可。

db_info = open(r'C:/Users/asus/Desktop/password/root@mysql.txt')
con = create_engine(db_info.read())
posted @ 2021-03-16 09:08  Lu-顺  阅读(4167)  评论(0编辑  收藏  举报