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())


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM