翼度科技»论坛 编程开发 python 查看内容

Python工具箱系列(二十三)

6

主题

6

帖子

18

积分

新手上路

Rank: 1

积分
18
基于游标得操作
游标是数据库操作的相对底层的能力。简单的操作如下:
  1. import mysql.connector
  2. import random
  3. host = 'localhost'
  4. user = 'root'
  5. password = '8848is8848'
  6. dbname = 'demodb'
  7. def fakedata(maxtimes):
  8.     # 连接数据库
  9.     demodb = mysql.connector.connect(
  10.         host=host, user=user, password=password, database=dbname)
  11.     democur = demodb.cursor()
  12.     # 插入模拟出来的数据。
  13.     for _ in range(maxtimes):
  14.         pm25 = random.uniform(0, 300)
  15.         insertsql = f'insert into demotb(pm25) values({pm25})'
  16.         democur.execute(insertsql)
  17.     demodb.commit()
  18.     democur.close()
  19.     demodb.close()
  20. def querydata():
  21.     # 连接数据库
  22.     demodb = mysql.connector.connect(
  23.         host=host, user=user, password=password, database=dbname)
  24.     democur = demodb.cursor()
  25.     # 进行一个简单的查询,返回多个值
  26.     selsql = 'select pm25 from demotb where pm25 >50.0'
  27.     democur.execute(selsql)
  28.     for i in democur:
  29.         print(i)
  30.     demodb.commit()
  31.     democur.close()
  32.     demodb.close()
  33. def queryresult():
  34.     # 连接数据库
  35.     demodb = mysql.connector.connect(
  36.         host=host, user=user, password=password, database=dbname)
  37.     democur = demodb.cursor()
  38.     # 进行一个简单的查询,返回多个值
  39.     selsql = 'select max(pm25) from demotb'
  40.     democur.execute(selsql)
  41.     result = democur.fetchone()
  42.     print(result)
  43.     demodb.commit()
  44.     democur.close()
  45.     demodb.close()
  46. fakedata(10)
  47. querydata()
  48. queryresult()
复制代码
上述操作是比较底层的,尤其是使用游标操作,只能够是遍历操作,然后依次处理数据。为此,需要引入更加抽象与高层的工具。
基于pandas的操作

pandas虽然字面意思是熊猫,但实际上它是一个强力的数据分析工具框架。网上对于pandas的介绍非常多,但笔者还是推荐直接看官方文档更好。使用pandas访问数据库的代码如下:
 
  1. import mysql.connector
  2. import pandas as pd
  3. host = 'localhost'
  4. user = 'root'
  5. password = '8848is8848'
  6. dbname = 'demodb'
  7. def querydata():
  8.     # 连接数据库
  9.     demodb = mysql.connector.connect(
  10.         host=host, user=user, password=password, database=dbname)
  11.     # 进行一个简单的查询,返回多个值
  12.     selsql = 'select pm25 from demotb where pm25 >50.0'
  13.     listpd = pd.read_sql(selsql, demodb)
  14.     demodb.close()
  15.     print(listpd)
  16. querydata()
复制代码
 
此时返回的输出结果如下所示:
  1.       pm25
  2. 0   80.6221
  3. 1  192.4580
  4. 2  291.4450
  5. 3  279.8550
  6. 4   92.3528
  7. 5  107.4040
  8. 6  144.2040
  9. 7  213.5120
  10. 8  226.6060
复制代码
如下所示,pandas使用DataFrame来管理记录,其输出本身就具有表格的特性,与数据库表也很相似,理解与操作起来非常方便。

 

 在新版本的pandas中,上述代码会引起警告,建议改成SQLAlchemy connectable(engine/connection),后续代码将引入这种升级的连接方式。
 

来源:https://www.cnblogs.com/shanxihualu/p/17072217.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具