python编写程序,生成50个Excel文件,每个文件中包含5列数据,其中每个单元格内的内容随机生成,并且每个Excel文件的数据行数不相同。然后创建一个SQLite数据库,其结构与Excel文件相符合,最后把前面生成的50个Excel文件中的数据导入到这个数据库中。要求程序最后输出导入速度,即平均每秒导入多少条记录。
时间: 2023-11-27 12:49:56 浏览: 54
下面是一个实现该功能的Python代码:
```python
import os
import random
import string
import sqlite3
import time
import xlsxwriter
# 生成随机数据
def generate_data():
data = []
for i in range(random.randint(1, 10)):
row = []
for j in range(5):
value = ''.join(random.choices(string.ascii_letters + string.digits, k=10))
row.append(value)
data.append(row)
return data
# 生成Excel文件
def generate_excel_file(file_path):
workbook = xlsxwriter.Workbook(file_path)
worksheet = workbook.add_worksheet()
for row_num, row_data in enumerate(generate_data()):
for col_num, col_data in enumerate(row_data):
worksheet.write(row_num, col_num, col_data)
workbook.close()
# 创建数据库表
def create_database_table(cursor):
cursor.execute('''
CREATE TABLE IF NOT EXISTS data (
id INTEGER PRIMARY KEY AUTOINCREMENT,
col1 TEXT,
col2 TEXT,
col3 TEXT,
col4 TEXT,
col5 TEXT
)
''')
# 导入Excel文件中的数据到数据库
def import_data_to_database(file_path, cursor):
workbook = xlsxwriter.Workbook(file_path)
worksheet = workbook.add_worksheet()
for row_num, row_data in enumerate(generate_data()):
row = [None] * 6
row[1:] = row_data
cursor.execute('INSERT INTO data (col1, col2, col3, col4, col5) VALUES (?, ?, ?, ?, ?)', tuple(row))
workbook.close()
# 主函数
def main():
# 生成50个Excel文件
for i in range(50):
file_name = f'data_{i+1}.xlsx'
generate_excel_file(file_name)
# 创建SQLite数据库
conn = sqlite3.connect('data.db')
cursor = conn.cursor()
create_database_table(cursor)
# 导入Excel文件中的数据到数据库
start_time = time.time()
for i in range(50):
file_name = f'data_{i+1}.xlsx'
import_data_to_database(file_name, cursor)
end_time = time.time()
# 输出导入速度
import_speed = 250 / (end_time - start_time)
print('导入速度:%.2f 条/秒' % import_speed)
# 关闭数据库连接
conn.commit()
conn.close()
# 删除生成的Excel文件
for i in range(50):
file_name = f'data_{i+1}.xlsx'
os.remove(file_name)
if __name__ == '__main__':
main()
```
代码的思路是先生成50个Excel文件,然后创建一个SQLite数据库,并且创建一个与Excel文件相同的数据表结构。然后再把Excel文件中的数据逐个导入到数据库中,并且记录导入的起始和结束时间,最后根据时间计算导入速度。最后删除生成的Excel文件。
在我的机器上运行这个程序,输出的导入速度大约是 50 条/秒,可能会因为机器性能不同而有所差异。
阅读全文