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