sqlite 保存对象列表
时间: 2024-09-18 17:01:42 浏览: 8
SQLite 是一种轻量级的关系型数据库管理系统,它并不直接支持将 Python 对象列表存储为表的形式,因为 SQLite 的数据模型是以表格(tables)为基础的,而不是像 JSON 或序列化那样处理复杂的数据结构。
如果你想在 SQLite 中持久化 Python 对象列表,通常的做法是先将对象转换成可以插入数据库的简单数据类型(如整数、字符串、日期等),然后存储到相应的列中。例如,如果你有一个 Person 类,你可以创建一个包含 person_id 和 person_data(如字典表示的属性集合)的表:
```python
class Person:
def __init__(self, id, name, age):
self.id = id
self.name = name
self.age = age
# 将 Person 对象转换为字典并保存
def save_persons_to_sqlite(person_list, db_connection):
cursor = db_connection.cursor()
create_table_query = """
CREATE TABLE IF NOT EXISTS persons (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
age INTEGER
);
"""
cursor.execute(create_table_query)
for person in person_list:
data_dict = {
'id': person.id,
'name': person.name,
'age': person.age
}
insert_query = "INSERT INTO persons (id, name, age) VALUES (?, ?, ?)"
cursor.execute(insert_query, data_dict.values())
db_connection.commit()
```
当你需要从数据库读取对象时,再根据查询结果动态地创建 Person 对象:
```python
def load_persons_from_sqlite(db_connection):
cursor = db_connection.cursor()
select_query = "SELECT * FROM persons"
cursor.execute(select_query)
result = cursor.fetchall()
return [Person(*row) for row in result]
```