1、案例练习之前,进行一个etl相关的课程:
安装依赖的包 → 打开anaconds prompt → 输入pip install pymysql(命令行程序)→ 运行后结束
可能遇到版本落后问题,此时需要更新 → python -m pip install —upgrade pip → 更新后解决
如果电脑有两个版本则输入pip3 install pymysql
2、读取数据库两种连接方式:
(1)Pandas连接(推荐)
import pymysqlimport pandas as pdfrom sqlalchemy import create_engine # 从第三方包调一个方法,下面用了这个方法# 不用create_engine这个方法连接数据库的话,用sqlalchemy的ORM框架连接数据库也可以sql = "select * from company where companyShortName='唯医网'"engine = create_engine('mysql+pymysql://root:mysql@localhost:3306/data?charset=utf8')#不用使用参数,直接使用固定格式语句;表示使用pymysql这个方法连接mysql数据库# 创建一个全新的数据框df = pd.read_sql(sql,engine)# pd.read_sql(sql,con) 这里的连接比较特殊,有sql,con两个关键参数:# sql指sql语句# con指创建数据库连接的engine变量df# 用sql语句过滤数据 或者 使用df数据框过滤数据都可以,看自己需求# 区别在于sql语句和df数据框占用的服务器不同,自己练习的话都是localhost,但是工作的话就不一样了
(2)Python原生连接(不方便)
import pymysql# 创建新的变量:conn(连接)# 'localhost' = '127.0.0.1'# 打开数据库连接conn = pymysql.connect(host = 'localhost', # 数据库主机地址user = 'root', # 数据库用户名password = 'mysql', # 数据库密码db = 'data', # 需要连接的数据库port = 3306,charset = 'utf8')# 使用 cursor() 方法创建一个游标对象curcur = conn.cursor()# 使用 execute() 方法执行 SQL 查询cur.execute('select * from company')# 使用 fetchall() 方法获取所有数据# 使用 fetchmany() 方法获取一些数据# 使用 fetchone() 方法获取单条数据data = cur.fetchall() # 所有数据都放进了data里面data # data为元祖形式for d in data:print(d[0],d[1],d[2])# 如果要执行新的sql语句时,要把整个操作再执行一遍# 提交到数据库执行,但是数据分析师以读为主conn.commit()# 关闭游标连接cur.close()# 关闭数据库连接conn.close()# 关闭数据库连接,游标连接也会被关掉# 一个mysql数据库只会保持一个conn连接,所以要记得退出
