最新要闻

广告

手机

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

家电

Python工具箱系列(二十三)

来源:博客园


(相关资料图)

基于游标得操作

游标是数据库操作的相对底层的能力。简单的操作如下:

import mysql.connectorimport randomhost = "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.connectorimport pandas as pdhost = "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()

此时返回的输出结果如下所示:

pm250   80.62211  192.45802  291.44503  279.85504   92.35285  107.40406  144.20407  213.51208  226.6060

如下所示,pandas使用DataFrame来管理记录,其输出本身就具有表格的特性,与数据库表也很相似,理解与操作起来非常方便。

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

关键词: 连接数据库 连接方式 数据分析