python 连接数据库读取及写入
一、数据库连接
数据库产品名+连接工具名://用户名:密码@数据库ip地址:数据库端口号/数据库名?charset=数据库编码格式
中文编码格式一般有utf-8、utf-16、gbk、gb2312、gb18030
1 import pandas as pd 2 from sqlalchemy import create_engine 3 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 import pymysql 2 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 import pymysql 2 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 import pymysql 2 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\')
连接的数据库可以实现增删查改的功能,更偏向于数据库语句的操作。