Python 数据类和 sqlite3 适配器

问题描述 投票:0回答:1

使用

sqlite3
executemany
将列表中包含的数据类实例中存储的数据提交到 SQLite 的最简洁方法是什么?

例如:

@dataclass
class Person:
    name: str
    age: int

a = Person("Alice", 21)
b = Person("Bob", 22)
c = Person("Charlie", 23)

people = [a, b, c] 

# ...

cursor.executemany(f"INSERT INTO {table} ({headers}) ({placeholders})", people) # <-- fails, obviously

是否有一种内置机制可以为我完成工作(遍历数据类的每个属性),或者一种惯用的方式,或者,如果没有,我如何为此实现一个适配器,而无需明确列出属性一个?

我可以将其转换为元组列表,开箱即用,但感觉多余。

python sqlite python-dataclasses sqlite3-python
1个回答
0
投票

使用

astuple()
方法将数据类实例转换为元组。

people = [x.astuple() for x in [a, b, c]]
© www.soinside.com 2019 - 2024. All rights reserved.