一、python通过pip安装包,提示 pip 不是内部或外部命令
1、执行pip install pymysql,报pip不是内部或者外部命令
2、需要将该命令加入到环境变量中,找到该命令所在的路径
3、右击我的电脑-->属性-->高级-->环境变量-->系统变量-->path,添加上pip所在的路径
4、但是依旧报上面的错,这次错在哪里呢?
原来是配置完成后,需要重新关闭命令窗口,重新打开配置的变量才会生效。
D:\Users\Administrator\Anaconda3\Scripts;
D:\Users\Administrator\Anaconda3;
D:\Users\Administrator\Anaconda3\Library\bin
二、原始数据库操作
1、导入包
import pymysql
2、连接数据库
建立连接
conn=pymysql.connect(
host = '127.0.0.1',
user = 'root',
password = '123456',
db = 'gansu',
port = 3306,
charset = 'utf8'
)
建立游标
cur = conn.cursor()
3、查询,得到的结果放在内存里
cur.execute('select * from bas_calcedvisit where CITY = "包头"')
4、获取数据,元组形式
data = cur.fetchall()
5、打印数据查看
for d in data:
print(d[21],d[22],d[23],d[24])
6、对数据库进行增删改后,必须提交
conn.commit()
7、执行完之后需要将其关闭
cur.close()
conn.close()
三、pandas读数据库
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、自定义函数
注意:这里的数据库名写成一个参数形式,则用{0}代替,后面加上.format(参数名),若多个参数,依次是{1},{2}....,后面.format(参数名1,参数名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
调用函数
df_data=reader( 'select * from bas_calcedvisit')
插入数据
df_data1=reader('select * from bas_calcedvisit where CHANNELDISPLAYNAME = "直接访问"')
数据框:
这里有个问题,如何统计出形如sql中查询数据呢
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()
插入表:(注意,一般都是先建表,然后插入数据,这样有自增字段)
(其中if_exists='append'时,如果表存在,则会追加数据,如果表不存在,则先新建表)
result.to_sql(name = 'newtable',con = 'mysql+pymysql://root:123456@localhost:3306/gansu?charset=utf8',if_exists='append',index = False )