百木园-与人分享,
就是让自己快乐。

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运算,属于一次性消费。


来源:https://www.cnblogs.com/shanxihualu/p/17030898.html
本站部分图文来源于网络,如有侵权请联系删除。

未经允许不得转载:百木园 » Python工具箱系列(二十一)

相关推荐

  • 暂无文章