使用Python从SQLite数据库循环遍历每个表的第一列(属性)

时间:2014-04-02 20:23:30

标签: python sql sqlite

我正在编写一个实用程序来帮助使用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但是#&# 39;不。这就是为什么我希望找到一个允许我只选择每个表的第一列或键的查询。

1 个答案:

答案 0 :(得分: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