如何预过滤我想要插入到sql表中的字典列表,其中每个字典都有一个额外的列

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

我有一个 sqlite3 连接器,我想将一个字典列表插入到 sql 表中。 但是,此字典列表可能有一个额外的列,该列不属于 sql 表架构的一部分。

显然,我可以在使用

executemany
之前预先过滤字典列表以删除此列,这就是我目前正在做的事情。 sqlite3 是否有一种本地方法可以直接为我处理此过滤?如果我只是尝试插入不进行过滤的字典,它会失败并说我提供了超出必要的列。

python sql sqlite
1个回答
0
投票

https://docs.python.org/3/library/sqlite3.html#how-to-adapt-custom-python-types-to-sqlite-values

如何注册适配器可调用对象 另一种可能性是创建一个将 Python 对象转换为 SQLite 兼容类型的函数。然后可以使用 register_adapter() 注册该函数。

class Point:
    def __init__(self, x, y):
        self.x, self.y = x, y

def adapt_point(point):
    return f"{point.x};{point.y}"

sqlite3.register_adapter(Point, adapt_point)

con = sqlite3.connect(":memory:")
cur = con.cursor()

cur.execute("SELECT ?", (Point(1.0, 2.5),))
print(cur.fetchone()[0])
© www.soinside.com 2019 - 2024. All rights reserved.