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
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工具箱系列(二十三) - Python技术站

(0)
上一篇 2023年3月31日 下午9:08
下一篇 2023年3月31日 下午9:08

相关文章

  • Python工具箱系列(二十四)

    不管多少人黑微软,微软出品的大多数产品都能够深入人心,成为精品。在数据库领域,微软为专业人士提供SQL Server(简称mssql)。为日常办公人士提供Access与Excel这两款数据存储与分析的神器。 SQL Server是微软在数据库领域打造的旗舰产品,使用起来安全、稳定、可靠,并且对于SQL语言的语法与特性支持的非常好。长期以来由于微软敌视开源运动…

    2023年3月31日
    00
  • Python工具箱系列(九)

    在计算机世界里,信息安全始终占据着重要的地位,我们随处就可以看到信息安全的应用: ◆ 访问网站时,使用https而不是http会使访问者的安全性大大提升 ◆ 下载文件时,正规的网站都会提供MD5或类似的散列码,供下载后校验,以防止下载被篡改的文件(有可能包含病毒或恶意代码等) ◆ 网络银行或者手机银行的U盾或者电子证书等 ◆ 区域链以及数字货币等 ◆ ssh…

    2023年4月2日
    00
  • Python工具箱系列(十一)

    上文讲的古典加密算法虽然很简单,但是在密码史上是使用最久的加密方式。历史上由于算力有限,加上有学识的人有限,所以直到概率论出现后,古典密码才开始破防。归根结底,英文单词中字母出现的频率是不同的,e以12.702%的百分比占比最高,z只占到0.074%,感兴趣的同学可以去百科查字母频率详细统计数据。如果密文数量足够大,仅仅采用频度分析法就可以破解。如果再加上现…

    Python开发 2023年4月2日
    00
  • Python工具箱系列(八)

    前面我们提到过,有以下工具都可以开发Python代码: 直接使用Python解释器。运行Python就可以得到一个交互式命令行界面,可以简单的测试代码。作为Python入门,写代码不超过10行,完全可用。如果想开发大型代码,这个真心很难用。 使用IPython,也是命令行界面,但内置非常方便的各种宏与功能。比单纯的Python交互界面强太多。在某些情况下,例…

    2023年4月2日
    00
  • Python工具箱系列(三十一)

    Neo4j是一个高性能的开源的,使用Java语言实现的NoSQL图数据库,它将结构化数据存储在网络上而不是表中。它是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎,但是它将结构化数据存储在网络(从数学角度叫做图)上而不是表中。Neo4j也可以被看作是一个高性能的图引擎,该引擎具有成熟数据库的所有特性。现实中很多数据都是用图来表达的,比如社交…

    python 2023年5月11日
    00
  • Python工具箱系列(十五)

    前文讲述加解密时,直接将密钥写在了python源代码中,这肯定不是什么好的手法。应该将这类与代码加功效无关的信息保存到配置中,随时可以需要进行修改。从大的角度来看,配置无非就是以下方式: 保存到配置文件中,格式可以是txt/csv/ini/xml/yaml/json/其它特殊格式等; 保存到数据库中,数据库可以是本地的,也可以是远程的; 特殊情况下,配置信息…

    Python开发 2023年4月2日
    00
  • Python工具箱系列(二十五)

    Redis是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivotal赞助。Redis是一个nosql数据库。nosql是not-only sql的意思,泛指非关系型数据库。…

    Python开发 2023年3月31日
    00
  • Python工具箱系列(六)

    相比较于windows下安装python,在Linux下安装python实际上是一个非常困难的选择。首先要解决的就是选择哪个发行版本的问题。Linux的内核掌握在技术团队中,但是Linux发行版本则掌握在不同的公司手中。不同的公司出于不同的考虑,在Linux内核的基础上,打包了不同的应用程序,安装了不同的包管理器,实现了不同的发布策略,这就导致了数以百计的发…

    Python开发 2023年4月2日
    00
合作推广
合作推广
分享本页
返回顶部