pymysql返回数据的处理

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()         关闭游标对象
    原文作者:3230
    原文地址: https://www.jianshu.com/p/914f6756785a
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞