使用
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
是否有一种内置机制可以为我完成工作(遍历数据类的每个属性),或者一种惯用的方式,或者,如果没有,我如何为此实现一个适配器,而无需明确列出属性一个?
我可以将其转换为元组列表,开箱即用,但感觉多余。
使用
astuple()
方法将数据类实例转换为元组。
people = [x.astuple() for x in [a, b, c]]