不用pandas sqlite3
时间: 2024-12-09 13:13:23 浏览: 9
Python3数据库编程实战
如果你不想使用pandas和sqlite3库来处理Excel和SQLite数据库,可以考虑其他方法。例如,你可以直接使用Python内置的csv模块读取CSV文件,而不是Excel文件,因为CSV是一种更通用的格式,可以直接与SQLite的`executemany()`函数配合。
以下是一个例子,说明如何不使用pandas和sqlite3处理CSV文件和SQLite数据库:
1. **生成CSV文件**:
将上述生成Excel的部分替换为生成CSV文件:
```python
import csv
import random
with open(f"data/data_{i+1}.csv", "w", newline="") as csvfile:
writer = csv.writer(csvfile)
rows_count = random.randint(1, 100)
for _ in range(rows_count):
row_data = [random.random() for _ in range(5)]
writer.writerow(row_data)
```
这将为每个文件生成一个CSV文件。
2. **创建SQLite数据库和导入数据**:
使用`sqlite3`库,但不再依赖`pandas`读取CSV文件,而是直接读取:
```python
import sqlite3
import os
conn = sqlite3.connect("database.db")
c = conn.cursor()
# 删除旧表,假设已存在
c.execute("DROP TABLE IF EXISTS my_table")
# 创建新表
c.execute("""
CREATE TABLE my_table (
col1 REAL,
col2 REAL,
col3 REAL,
col4 REAL,
col5 REAL
)
""")
# 循环遍历所有CSV文件并导入
for filename in sorted(os.listdir("data")):
if filename.endswith(".csv"):
with open(f"data/{filename}", "r") as csvfile:
reader = csv.reader(csvfile)
next(reader) # 跳过标题行
c.executemany("INSERT INTO my_table VALUES (?, ?, ?, ?, ?)", reader)
```
3. **测量导入速度**:
同样地,测量总导入时间和计算平均速度。
注意,这种方法可能会比使用pandas略慢,因为它绕过了pandas的高效数据解析功能。而且,你需要手动处理CSV文件的第一行作为表头。
阅读全文