1、加載庫、定義函數
import pandas as pd import pymysql def mycursor(db_name=None): '''連接數據庫,創建游標''' config = dict(zip(['host', 'user', 'port', 'password'], ['192.168.137.155', 'shanger', 3306, '0123'])) config.update(database=db_name) connection = pymysql.connect(**config) cursor = connection.cursor() return cursor def use(db_name): '''切換數據庫,返回游標''' return mycursor(db_name) def query(sql): '''以數據框形式返回查詢據結果''' cursor.execute(sql) data = cursor.fetchall() # 以元組形式返回查詢數據 header = [t[0] for t in cursor.description] df = pd.DataFrame(list(data), columns=header) # pd.DataFrem 對列表具有更好的兼容性 return df def select_all_from(table): sql = f'select * from {table};' return query(sql)
2、統計
cursor = use('sql123') # 切換數據庫
select_all_from('poptbl') # 查看所有記錄
分組統計
sql = ''' select case pref_name when '德島' then '四國' when '香川' then '四國' when '愛媛' then '四國' when '高知' then '四國' when '福岡' then '九州' when '佐賀' then '九州' when '長崎' then '九州' else '其他' end as 地區, sum(population) as 人口數 from poptbl group by 1; ''' query(sql).sort_values(by='人口數', ascending=False)