我擅长python,尤其是pandas处理数据,虽然SQL就是用于查询功能的,但是我觉得pandas的查询数据的能力也不相上下。
所以把sql的数据框导入到python的环境,然后再去查询和筛选岂不是美滋滋。
pymysql
主要用pymysql这个库去实现,
导入包:
import pymysql
import pandas as pd
链接数据框对象
#账户密码
db = pymysql.connect(
host='127.0.0.1', port=3306,
user='root', passwd='****', # 输入自己的账户和密码
db ='college', charset='utf8' # db 输入数据库,有用到的就行
)
本地环境的话,host和port这两个参数也不用改。主要是自己的密码和db这个参数要改,db表示数据库名称。
写sql语句执行
sql = '''select * from student ;''' # SQL 代码
cursor = db.cursor() # 执行数据库的操作是由cursor完成的,使用cursor()方法获取操作游标
cursor.execute(sql) # 执行sql语句
获取数据
datas = cursor.fetchall() # 获取查询的所有记录
cols_info = cursor.description # 获取行相关信息
cursor.close() # 关闭游标
db.close() # 关闭连接数据库
转为数据框
cols = [col[0] for col in cols_info] # 处理保留列名
df = pd.DataFrame(datas,columns=cols)
df
我感觉很方便,确实把我college里面的student这张表弄出来了。
封装成函数,然后把我其他的表也弄出来试试:
def get_sql_data(sql_sence='''select * from course ''',sql_name='college'):
#账户密码
db = pymysql.connect(
host='127.0.0.1', port=3306,
user='root', passwd='****', # 输入自己的账户和密码
db =sql_name, charset='utf8' # db 输入数据库,有用到的就行
)
sql_course = sql_sence # SQL 代码
cursor = db.cursor() # 执行数据库的操作是由cursor完成的,使用cursor()方法获取操作游标
cursor.execute(sql_course) # 执行sql语句
datas = cursor.fetchall() # 获取查询的所有记录
cols_info = cursor.description # 获取行相关信息
cols = [col[0] for col in cols_info] # 处理保留列名
df = pd.DataFrame(datas,columns=cols)
cursor.close() # 关闭游标
db.close() # 关闭连接数据库
return df
导出课程表:course
get_sql_data(sql_sence='''select * from course ''')
导出成绩表:
get_sql_data(sql_sence='''select * from score ''')
然后再去用pandas进行筛选查询什么的就很方便了。