奔跑的小猪仔 发表于 2023-1-29 14:17:10

Python工具箱系列(二十三)

基于游标得操作
游标是数据库操作的相对底层的能力。简单的操作如下:
import mysql.connector
import random

host = 'localhost'
user = 'root'
password = '8848is8848'
dbname = 'demodb'


def fakedata(maxtimes):

    # 连接数据库
    demodb = mysql.connector.connect(
      host=host, user=user, password=password, database=dbname)
    democur = demodb.cursor()

    # 插入模拟出来的数据。
    for _ in range(maxtimes):
      pm25 = random.uniform(0, 300)
      insertsql = f'insert into demotb(pm25) values({pm25})'
      democur.execute(insertsql)

    demodb.commit()
    democur.close()
    demodb.close()


def querydata():

    # 连接数据库
    demodb = mysql.connector.connect(
      host=host, user=user, password=password, database=dbname)
    democur = demodb.cursor()

    # 进行一个简单的查询,返回多个值
    selsql = 'select pm25 from demotb where pm25 >50.0'
    democur.execute(selsql)
    for i in democur:
      print(i)
    demodb.commit()
    democur.close()
    demodb.close()


def queryresult():

    # 连接数据库
    demodb = mysql.connector.connect(
      host=host, user=user, password=password, database=dbname)
    democur = demodb.cursor()

    # 进行一个简单的查询,返回多个值
    selsql = 'select max(pm25) from demotb'
    democur.execute(selsql)
    result = democur.fetchone()
    print(result)
    demodb.commit()
    democur.close()
    demodb.close()


fakedata(10)
querydata()
queryresult()上述操作是比较底层的,尤其是使用游标操作,只能够是遍历操作,然后依次处理数据。为此,需要引入更加抽象与高层的工具。
基于pandas的操作

pandas虽然字面意思是熊猫,但实际上它是一个强力的数据分析工具框架。网上对于pandas的介绍非常多,但笔者还是推荐直接看官方文档更好。使用pandas访问数据库的代码如下:
 
import mysql.connector
import pandas as pd

host = 'localhost'
user = 'root'
password = '8848is8848'
dbname = 'demodb'


def querydata():

    # 连接数据库
    demodb = mysql.connector.connect(
      host=host, user=user, password=password, database=dbname)

    # 进行一个简单的查询,返回多个值
    selsql = 'select pm25 from demotb where pm25 >50.0'
    listpd = pd.read_sql(selsql, demodb)
    demodb.close()
    print(listpd)


querydata() 
此时返回的输出结果如下所示:
      pm25
0   80.6221
1192.4580
2291.4450
3279.8550
4   92.3528
5107.4040
6144.2040
7213.5120
8226.6060如下所示,pandas使用DataFrame来管理记录,其输出本身就具有表格的特性,与数据库表也很相似,理解与操作起来非常方便。

 

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

来源:https://www.cnblogs.com/shanxihualu/p/17072217.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: Python工具箱系列(二十三)