翼度科技»论坛 编程开发 python 查看内容

Python工具箱系列(二十一)

11

主题

11

帖子

33

积分

新手上路

Rank: 1

积分
33
准备数据

为了方便准备试验用的数据,建议使用Faker这个库来模拟。Faker是一个Python软件包,可生成伪造数据。无论是需要引导数据库,创建美观的XML文档,填充持久性以进行压力测试,还是匿名化来自生产服务的数据,Faker都能完美实现。
  1. pip install faker
复制代码
以下代码生成姓名、性别这类最常用的试验数据。
  1. from faker import Faker
  2. def fakedata(maxtimes):
  3.     fake = Faker('zh_CN')
  4.     data_total = [[fake.name(), fake.company(), fake.phone_number(), fake.company_email(), fake.address(),
  5.              fake.date_time(tzinfo=None)] for x in range(maxtimes)]
  6.     print(data_total)
  7.     return data_total
  8. fakedata(10)
复制代码
由于每次fake时,数据都在变化。为了方便使用,可以将生成的数据保存在文件中。文件类型可以是:
◇txt文件。虽然最简单最自由,但要程序可行分析,不建议
◇excel文件。在Windows环境下使用非常方便。但平台兼容性差
◇csv文件。兼容性强,跨平台,解析方便,推荐
◇json文件。兼容性强,跨平台,解析方便,推荐
◇其它格式可以考虑yaml格式等
 
下面代码演示了如何以csv格式保存生成的数据:
  1. from faker import Faker
  2. import csv
  3. def fakedata(maxtimes):
  4.     fake = Faker('zh_CN')
  5.     data_total = [[fake.name(), fake.company(), fake.phone_number(), fake.company_email(), fake.address(),
  6.                    fake.date_time(tzinfo=None)] for x in range(maxtimes)]
  7.     print(data_total)
  8.     return data_total
  9. headerlist = ['name','company','phone','email','address','date']
  10. with open('fake.csv','w',encoding='utf-8') as f:
  11.     writer = csv.writer(f)
  12.     # 写头部信息
  13.     writer.writerow(headerlist)
  14.    
  15.     # 写数据
  16.     data = fakedata(100)
  17.     writer.writerows(data)
复制代码
以上代码生成100条记录,并且保存在fake.csv文件备用。
 
创建数据库并且插入记录

sqlite是python3内置的标准库,直接引用即可,不需要任何安装,非常方便。
  1. import sqlite3
  2. import csv
  3. # 连接数据库,如果没有,则直接创建
  4. conn = sqlite3.connect("demo.db")
  5. cur = conn.cursor()
  6. # 创建表
  7. sqlstr = 'create table demo_table(name text,company text,phone text,email text,address text,date text)'
  8. cur.execute(sqlstr)
  9. # 不提交表格没有真正创建
  10. conn.commit()
  11. # 从文件中读出数据,并且依次写入数据库
  12. with open('fake.csv', 'r', encoding='utf-8') as f:
  13.     reader = csv.reader(f)
  14.     # 读头部信息
  15.     header = next(reader)
  16.     print(header)
  17.     # 开始遍历
  18.     for row in reader:
  19.         if row:
  20.             insertsql = f"insert into demo_table (name,company,phone,email,address) values ('{row[0]}','{row[1]}','{row[2]}','{row[3]}','{row[4]}')"
  21.             # 插入数据库记录
  22.             cur.execute(insertsql)
  23.     # 一次性提交
  24.     cur.close()
  25.     conn.commit()
  26.     conn.close()
复制代码
以上就将保存在fake.csv中的内容全部插入到了数据库中。后续的CRUD操作都很类似。
sqlite还可以在内存中创建数据库,只要输入特殊参数值:memory:即可,该数据库只存在于内存中,不会生成本地数据库文件。只要使用如下所示的特殊的关键定即可。
  1. conn = sqlite3.connect(':memory:')
复制代码
内存数据库速度更快,可以在不产生文件的情况下,实现临时性的SQL运算,属于一次性消费。

来源:https://www.cnblogs.com/shanxihualu/p/17030898.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具