一、数据库连接
数据库产品名+连接工具名://用户名:密码@数据库ip地址:数据库端口号/数据库名?charset=数据库编码格式
中文编码格式一般有utf-8、utf-16、gbk、gb2312、gb18030
1 importpandas as pd2 from sqlalchemy importcreate_engine3
4 con = create_engine('mysql+pymysql://root:123456@localhost:3306/day3?charset=gbk')
二、数据库读取
①read_sql_table只能读表
1 #read_sql_table只能读表
2 pd.read_sql_table('dept',con)
②read_sql_query 只能查询
1 #read_sql_query 只能查询
2 sql = 'select * from join_course a left join join_score b \3 on a.course_id=b.course_id where a.course_id="003"'
4 pd.read_sql_query(sql,con)
③read_sql 既能查询也能读表
1 #read_sql读表
2 pd.read_sql('join_score',con)
1 #read_sql查询
2 sql = 'select * from join_course a left join join_score b \3 on a.course_id=b.course_id where a.course_id="003"'
4 pd.read_sql(sql,con)
三、数据库存储
①dataframe数据格式存储,首先列名与插入数据库的表名要一致
1 #构造数据
2 data = pd.DataFrame([[1,'004',90]],columns=['student_id','course_id','grade'])3 data
1 #if_exists接收fail,replace,append。fail表示如果表名存在则不执行写入操作;replace表示如果存在,
2 #将原数据库表删除,再重新创建;append则表示在原数据库表的基础上追加数据。默认为fail。3
4 data.to_sql('join_score',con,if_exists='append',index=False) #追加
1 #查看表中数据,增加了几行(由于执行了多次)
2 pd.read_sql_table('join_score',con)
②另一种连接存储
1 importpymysql2 db = pymysql.connect(user='root',password='123456',host='127.0.0.1',database='day3',charset='gbk')3
4 cursor = db.cursor() #定义游标
5 cursor.execute('insert into join_score values(6,"006",95)') #执行插入语句
6 db.commit() #事故提交后才能真正的写入
7
8 #查询表
9 pd.read_sql_table('join_score',con=con)
③pymysql连接的查询
1 importpymysql2 db = pymysql.connect(user='root',password='123456',host='127.0.0.1',database='day3',charset='gbk')3 cursor = db.cursor() #定义游标
4 cursor.execute('select * from join_score') #执行查询语句
5 pd.DataFrame(list(cursor.fetchall())) #去除结果
④pymysql连接的删除
1 importpymysql2 db = pymysql.connect(user='root',password='123456',host='127.0.0.1',database='day3',charset='gbk')3 cursor = db.cursor() #定义游标
4 cursor.execute('delete from join_score where student_id =1') #执行查询语句
5 db.commit() #跟插入一样,要提交事故执行的语句才能有效
6 db.close()
四、总结
from sqlalchemy import create_engine这个连接的数据库,可以实现增、查工作;而import pymysql
db = pymysql.connect(user='root',password='123456',host='127.0.0.1',database='day3',charset='gbk')
连接的数据库可以实现增删查改的功能,更偏向于数据库语句的操作。