【问题标题】:Loop Through First Column (Attribute) of Each Table from SQLite Database with Python使用 Python 循环遍历 SQLite 数据库中每个表的第一列(属性)
【发布时间】:2025-12-05 12:15:02
【问题描述】:

我正在编写一个实用程序来帮助使用 Python 分析 SQLite 数据库的一致性。手动我发现了一些不一致的地方,所以我认为如果我可以批量执行这些操作以节省时间会很有帮助。我打算在 Python 中尝试这个,但遇到了麻烦。

假设我连接、创建一个游标并运行一个或两个查询,最后得到一个我想要迭代的结果集。我希望能够做这样的事情(每个表都以 ID 作为主键的列表):

# python/pseudocode of what I'm looking for
for table in tables:
    for pid in pids:
        query = 'SELECT %s FROM %s' % (pid, table)
        result = connection.execute(query)
        for r in result:
            print r

这会从表列表中的每个表中生成一个 ID 列表。我不确定我是否接近。

这里的问题是一些表有一个名为ID 的主键,而另一些表有一个名为TABLE_ID 等。如果它们都是ID,我可以从每个表中选择ID,但它们不是。这就是为什么我希望找到一个允许我只选择第一列或每个表的键的查询。

【问题讨论】:

    标签: python sql sqlite


    【解决方案1】:

    要获取表的列,请执行PRAGMA table_info 作为查询。 结果的pk 列显示了哪些列是主键的一部分:

    > CREATE TABLE t(
    >     other1 INTEGER,
    >     pk1    INTEGER,
    >     other2 BLOB,
    >     pk2    TEXT,
    >     other3 FLUFFY BUNNIES,
    >     PRIMARY KEY (pk1, pk2)
    > );
    > PRAGMA table_info(t);
    cid  name    type            notnull  dflt_value  pk
    ---  ------  --------------  -------  ----------  --
    0    other1  INTEGER         0                    0 
    1    pk1     INTEGER         0                    1 
    2    other2  BLOB            0                    0 
    3    pk2     TEXT            0                    2 
    4    other3  FLUFFY BUNNIES  0                    0 
    

    【讨论】: