首页 > 编程语言 >Python工具箱系列(二十三)

Python工具箱系列(二十三)

时间:2023-01-18 15:06:56浏览次数:40  
标签:二十三 Python demodb host user pm25 工具箱 password democur

基于游标的操作

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

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
1 192.4580
2 291.4450
3 279.8550
4 92.3528
5 107.4040
6 144.2040
7 213.5120
8 226.6060

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

Python工具箱系列(二十三)_连接数据库

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

标签:二十三,Python,demodb,host,user,pm25,工具箱,password,democur
From: https://blog.51cto.com/shanxihualu/6019225

相关文章

  • Python学习中的六个技巧小结
    1.引言“Beautifulisbetterthanugly.”上述为著名的TheZenofPython的第一句话,也是有追求的python开发人员的信条之一。所以我们的问题来了:如何编写漂亮的Python代......
  • python property使用
    classGoods():def__init__(self):self._price=""@propertydefprice(self):[email protected](self,val......
  • python 引用父类super
    classParent():def__init__(self,name):print(name)classSon(Parent):def__init__(self,name):super().__init__(name)s=Son(name="ccc")......
  • 类型提示和python函数中'->'的用法
    一、类型提示在python中,我们定义一个有参函数,调用该函数时需要传入参数,如下所示:#定义一个简单的函数defget_full_name(first_name,last_name):full_name=fir......
  • 如果有效python code review
    这篇文章主要介绍一些工具,方法,可以帮助我们做codepre-commit检查,这样我们做codereview之前,这些工具方法就帮我们解决了一些代码风格的问题和静态检查就能检查出来......
  • Python导入Excel表格数据并以字典dict格式保存
      本文介绍基于Python语言,将一个Excel表格文件中的数据导入到Python中,并将其通过字典格式来存储的方法。  我们以如下所示的一个表格(.xlsx格式)作为简单的示例。其中,表......
  • python3中(?P的正则应用
    importre'''其中?P可以理解为将字符串s分组处理并命名为province、city、block'''s='13g00x21yy'res=re.search('(?P<province>\d{2}).*(?P<city>\d{2}).*(?P<block>\d......
  • 使用Python的一维卷积
    学习&转载文章:使用Python的一维卷积背景在开发机器学习算法时,最重要的事情之一(如果不是最重要的话)是提取最相关的特征,这是在项目的特征工程部分中完成的。在CNNs中,此......
  • pyinstaller打包Python程序报错OSError: Python library not found: libpython3.8.so,
    重新编译python(不影响原来安装的库文件),加入--enable-shared./configure--prefix=/usr/local/python3--enable-shared然后make&&makeinstall就好了现在再次打开pytho......
  • python datetime 计算时间差
    场景:数据存储需要已5分钟为单位存储,目前上报数据是0.5s上报一次目前能想到的逻辑是,已最后一次存储的时间拿出来,与获取的时间数据计算差值,大于等于300秒就入库只能想到这......