pymysql可以使用fetchall返回元组型数据,也可以直接使用pandas获取DataFrame格式数据。具体操作如下。
1、首先,定义连接和查询sql
In [1]: import pandas as pd
...: import pymysql
...:
...: conn=pymysql.connect(host="localhost",user='root',passwd='20102010',
...: database='spyder_data',port=3306,use_unicode=True, charset="utf8")
...: sql='select * from spyder_data.anjuke_house limit 10'
2、使用fetchall获取数据
In [2]: cursor=conn.cursor()
...: cursor.execute(sql)
...: data=cursor.fetchall()
...: cursor.close()
...: conn.close()
In [3]: data
Out[3]:
((1, '中铁任之健康城', '璧山', '璧山区', '建面69.9-159.14㎡', '63万元/套起', '在售住宅品牌开发商湖景', 1),
(2, '阳光城翡丽公园', '沙坪坝', '双碑', '建面88.31-120㎡', '售价待定', '待售住宅轨交房综合体', 1),
(3, '西永9号', '沙坪坝', '西永', '建面85-131㎡', '售价待定', '待售住宅即将开盘品牌开发商', 1),
(4, '金科城', '北碚', '蔡家', '建面98.03-142.98㎡', '售价待定', '待售住宅双卫大主卧', 1),
(5, '雅居乐富春山居', '渝北', '中央公园', '建面97-152㎡', '300万元/套', '在售别墅品牌开发商景观小区', 1),
(6, '朗诗乐府', '北碚', '蔡家', '建面95-155㎡', '售价待定', '待售住宅轨交房景观小区', 1),
(7, '保亿湖山鹿鸣', '巴南', '鹿角', '建面73.5-146.95㎡', '售价待定', '待售住宅改善房品牌开发商', 1),
(8, '华远春风度', '江津', '江津', '建面32.43-73.7㎡', '售价待定', '在售商务公寓投资地产车位充足', 1),
(9, '天誉智慧城', '南岸', '弹子石', '建面59-95㎡', '240万元/套', '待售住宅', 1),
(10, '重庆奥园天悦湾', '北碚', '童家溪', '建面135-167㎡', '售价待定', '待售住宅', 1))
3、使用pandas的read_sql获取数据
pandas获取的数据会保留列名,在后期分析处理中更为方便。同时也可以像read_csv一样,添加参数以自定义数据(如自定义列名等)。
In [4]: conn=pymysql.connect(host="localhost",user='root',passwd='20102010',
...: database='spyder_data',port=3306,use_unicode=True, charset="utf8")
...: sql='select * from spyder_data.anjuke_house limit 10'
In [5]: df=pd.read_sql(sql=sql,con=conn)
In [6]: df.values
Out[6]:
array([[1, '中铁任之健康城', '璧山', '璧山区', '建面69.9-159.14㎡', '63万元/套起',
'在售住宅品牌开发商湖景', 1],
[2, '阳光城翡丽公园', '沙坪坝', '双碑', '建面88.31-120㎡', '售价待定', '待售住宅轨交房综合体',
1],
[3, '西永9号', '沙坪坝', '西永', '建面85-131㎡', '售价待定', '待售住宅即将开盘品牌开发商', 1],
[4, '金科城', '北碚', '蔡家', '建面98.03-142.98㎡', '售价待定', '待售住宅双卫大主卧', 1],
[5, '雅居乐富春山居', '渝北', '中央公园', '建面97-152㎡', '300万元/套',
'在售别墅品牌开发商景观小区', 1],
[6, '朗诗乐府', '北碚', '蔡家', '建面95-155㎡', '售价待定', '待售住宅轨交房景观小区', 1],
[7, '保亿湖山鹿鸣', '巴南', '鹿角', '建面73.5-146.95㎡', '售价待定',
'待售住宅改善房品牌开发商', 1],
[8, '华远春风度', '江津', '江津', '建面32.43-73.7㎡', '售价待定',
'在售商务公寓投资地产车位充足', 1],
[9, '天誉智慧城', '南岸', '弹子石', '建面59-95㎡', '240万元/套', '待售住宅', 1],
[10, '重庆奥园天悦湾', '北碚', '童家溪', '建面135-167㎡', '售价待定', '待售住宅', 1]],
dtype=object)
4、pymysql.connect参数
pymysql.Connect()参数说明
host(str): MySQL服务器地址
port(int): MySQL服务器端口号
user(str): 用户名
passwd(str): 密码
db(str): 数据库名称
charset(str): 连接编码
connection对象支持的方法
cursor() 使用该连接创建并返回游标
commit() 提交当前事务
rollback() 回滚当前事务
close() 关闭连接
cursor对象支持的方法
execute(op) 执行一个数据库的查询命令
fetchone() 取得结果集的下一行
fetchmany(size) 获取结果集的下几行
fetchall() 获取结果集中的所有行
rowcount() 返回数据条数或影响行数
close() 关闭游标对象