Python工具箱系列(二十一)

准备数据

为了方便准备试验用的数据,建议使用Faker这个库来模拟。Faker是一个Python软件包,可生成伪造数据。无论是需要引导数据库,创建美观的XML文档,填充持久性以进行压力测试,还是匿名化来自生产服务的数据,Faker都能完美实现。

pip install faker

以下代码生成姓名、性别这类最常用的试验数据。

from faker import Faker

def fakedata(maxtimes):
    fake = Faker('zh_CN')
    data_total = [[fake.name(), fake.company(), fake.phone_number(), fake.company_email(), fake.address(),
             fake.date_time(tzinfo=None)] for x in range(maxtimes)]
    print(data_total)
    return data_total

fakedata(10)

由于每次fake时,数据都在变化。为了方便使用,可以将生成的数据保存在文件中。文件类型可以是:

◇txt文件。虽然最简单最自由,但要程序可行分析,不建议

◇excel文件。在Windows环境下使用非常方便。但平台兼容性差

◇csv文件。兼容性强,跨平台,解析方便,推荐

◇json文件。兼容性强,跨平台,解析方便,推荐

◇其它格式可以考虑yaml格式等

 

下面代码演示了如何以csv格式保存生成的数据:

from faker import Faker
import csv

def fakedata(maxtimes):
    fake = Faker('zh_CN')
    data_total = [[fake.name(), fake.company(), fake.phone_number(), fake.company_email(), fake.address(),
                   fake.date_time(tzinfo=None)] for x in range(maxtimes)]
    print(data_total)
    return data_total

headerlist = ['name','company','phone','email','address','date']
with open('fake.csv','w',encoding='utf-8') as f:
    writer = csv.writer(f)
    # 写头部信息
    writer.writerow(headerlist)
    
    # 写数据
    data = fakedata(100)
    writer.writerows(data)

以上代码生成100条记录,并且保存在fake.csv文件备用。

 

创建数据库并且插入记录

sqlite是python3内置的标准库,直接引用即可,不需要任何安装,非常方便。

import sqlite3
import csv

# 连接数据库,如果没有,则直接创建
conn = sqlite3.connect("demo.db")

cur = conn.cursor()

# 创建表
sqlstr = 'create table demo_table(name text,company text,phone text,email text,address text,date text)'

cur.execute(sqlstr)

# 不提交表格没有真正创建
conn.commit()

# 从文件中读出数据,并且依次写入数据库
with open('fake.csv', 'r', encoding='utf-8') as f:
    reader = csv.reader(f)
    # 读头部信息
    header = next(reader)
    print(header)

    # 开始遍历
    for row in reader:
        if row:
            insertsql = f"insert into demo_table (name,company,phone,email,address) values ('{row[0]}','{row[1]}','{row[2]}','{row[3]}','{row[4]}')"
            # 插入数据库记录
            cur.execute(insertsql)

    # 一次性提交
    cur.close()
    conn.commit()
    conn.close()

以上就将保存在fake.csv中的内容全部插入到了数据库中。后续的CRUD操作都很类似。

sqlite还可以在内存中创建数据库,只要输入特殊参数值:memory:即可,该数据库只存在于内存中,不会生成本地数据库文件。只要使用如下所示的特殊的关键定即可。

conn = sqlite3.connect(':memory:')

内存数据库速度更快,可以在不产生文件的情况下,实现临时性的SQL运算,属于一次性消费。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python工具箱系列(二十一) - Python技术站

(0)
上一篇 2023年3月31日
下一篇 2023年3月31日

相关文章

  • Python工具箱系列(八)

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

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

    上文介绍了命令行方式来对文件进行加解密操作。本文将继续在此基础上,实现一个快速简易的GUI界面方便操作,先上代码看效果。 import argparse import configparser import json import os import struct import sys from configparser import ConfigParse…

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

    前面介绍了对称加密算法,本文将介绍密码学中另一类重要应用:消息摘要(Digest),什么是消息摘要?简单的定义是:对一份数据,进行一个单向的Hash函数,生成一个固定长度的Hash值,这个值就是这份数据的摘要,也称为指纹。 常见的摘要算法有: MD5 SHA1 SHA256 其它 特点如下:   无论输入的消息有多长,计算出来的消息摘要的长度总是固定的。例如…

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

    非对称加解密应用广泛,它的存在是致力于解决密钥通过公共信道传输这一经典难题。对称加密有一个天然的缺点,就是加密方和解密方都要持有同样的密钥,而这个密钥在传递过程中有可能会被截获,从而使加解密失效。难不成还要为密钥的传输再做一次加密?这样不就陷入了死循环?或许有人在想,密钥即使被盗取,不还有加密算法保证信息安全吗?但任何算法最终都会被破译,所以不能依赖算法的复…

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

    有了非对称密钥、摘要、对称密钥等现代密码学算法与技术,是不是就能够保证通信的安全无虞呢,并不是。 密码学在互联网应用的四个目标:机密性、完整性、身份验证、防抵赖。到目前为止,我们讨论的技术中,其中防抵赖的目标并没有达到。 假设A、B、C三个人共享一个对称加密算法密钥,现在A和B互相通信,A和B一直认为是双方在发送消息。由于C也有同样的密钥,它可以拦截A发往B…

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

    ClickHouse(Click Stream,Data WareHouse)是俄罗斯的 Yandex于2016年开源的用于在线分析处理查询(OLAP:Online Analytical Processing)MPP架构的列式存储数据库(DBMS:Database Management System),能够使用 SQL 查询实时生成分析数据报告。特别值得称道…

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

    很多软件工程师都认为MD5是一种加密算法,然而这种观点是不对的。作为一个 1992 年第一次被公开的算法,到今天为止已经被发现了一些致命的漏洞。本文讨论MD5在密码保存方面的一些问题。 假设下面一个场景:   软件产品让用户输入用户名与口令,随即使用MD5算法将口令(明文)转变成为摘要值。 用户登录时,用户输入的口令,也使用MD5进行计算,然后与存储的MD5…

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

    PostgreSQL MySQL的口号是“世界上最流行的开源关系型数据库”,而PostgreSQL的Slogan则是“世界上最先进的开源关系型数据库(PostgreSQL: The World’s Most Advanced Open Source Relational Database)”,一看这就是一对老冤家了。这两个口号很好的反映出了两者的形象特质:P…

    python 2023年5月8日
    00
合作推广
合作推广
分享本页
返回顶部