一习瑰、python通過pip安裝包,提示 pip 不是內(nèi)部或外部命令
1秽荤、執(zhí)行pip?install pymysql甜奄,報pip不是內(nèi)部或者外部命令
2柠横、需要將該命令加入到環(huán)境變量中,找到該命令所在的路徑
3课兄、右擊我的電腦-->屬性-->高級-->環(huán)境變量-->系統(tǒng)變量-->path牍氛,添加上pip所在的路徑
4、但是依舊報上面的錯烟阐,這次錯在哪里呢搬俊?
原來是配置完成后,需要重新關(guān)閉命令窗口蜒茄,重新打開配置的變量才會生效唉擂。
D:\Users\Administrator\Anaconda3\Scripts;
D:\Users\Administrator\Anaconda3;
D:\Users\Administrator\Anaconda3\Library\bin
二、原始數(shù)據(jù)庫操作
1檀葛、導入包
import pymysql
2玩祟、連接數(shù)據(jù)庫
建立連接
conn=pymysql.connect(
? ? host = '127.0.0.1',
? ? user = 'root',
? ? password = '123456',
? ? db = 'gansu',
? ? port =? 3306,
? ? charset = 'utf8'
)
建立游標
cur = conn.cursor()
3、查詢屿聋,得到的結(jié)果放在內(nèi)存里
cur.execute('select * from bas_calcedvisit where CITY = "包頭"')
4空扎、獲取數(shù)據(jù),元組形式
data = cur.fetchall()
5润讥、打印數(shù)據(jù)查看
for d in data:
? ? print(d[21],d[22],d[23],d[24])
6转锈、對數(shù)據(jù)庫進行增刪改后,必須提交
conn.commit()
7楚殿、執(zhí)行完之后需要將其關(guān)閉
cur.close()
conn.close()
三撮慨、pandas讀數(shù)據(jù)庫
1、加載包
import pymysql
import pandas as pd
from sqlalchemy import create_engine
2勒魔、連接甫煞、查詢
sql = 'select * from bas_calcedvisit'
engine = create_engine('mysql+pymysql://root:123456@localhost:3306/gansu?charset=utf8')
df = pd.read_sql(sql,engine)
3、自定義函數(shù)
注意:這里的數(shù)據(jù)庫名寫成一個參數(shù)形式冠绢,則用{0}代替抚吠,后面加上.format(參數(shù)名),若多個參數(shù)弟胀,依次是{1}楷力,{2}....,后面.format(參數(shù)名1,參數(shù)名2,....)
def reader(query,db = 'gansu'):
? ? sql = query
? ? engine = create_engine('mysql+pymysql://root:123456@localhost:3306/{0}?charset=utf8'.format(db))
? ? df = pd.read_sql(sql,engine)
? ? return df
調(diào)用函數(shù)
df_data=reader( 'select * from bas_calcedvisit')
插入數(shù)據(jù)
df_data1=reader('select * from bas_calcedvisit where CHANNELDISPLAYNAME = "直接訪問"')
數(shù)據(jù)框:
這里有個問題孵户,如何統(tǒng)計出形如sql中查詢數(shù)據(jù)呢
SELECT CITY,COUNT(DISTINCT UVCOOKIE),COUNT(DISTINCT SESSIONID),COUNT(ID) FROM bas_calcedvisit
WHERE CHANNELDISPLAYNAME = '直接訪問'
GROUP BY CITY
result = df_data1.groupby('CITY').count()['UVCOOKIE'].reset_index()
插入表:(注意萧朝,一般都是先建表,然后插入數(shù)據(jù)夏哭,這樣有自增字段)
(其中if_exists='append'時检柬,如果表存在,則會追加數(shù)據(jù)竖配,如果表不存在何址,則先新建表)
result.to_sql(name = 'newtable',con = 'mysql+pymysql://root:123456@localhost:3306/gansu?charset=utf8',if_exists='append',index = False )