【问题标题】:How to get table names using sqlite3 through python? [duplicate]如何通过python使用sqlite3获取表名? [复制]
【发布时间】:2016-04-06 19:58:54
【问题描述】:

我在从 sqlite3 数据库中获取数据时遇到问题。我找不到表的名称及其编码。当我通过 sqlitebrowser 打开数据库时,名称只是不可读的字符。 与数据库的连接很好。

conn = sqlite3.connect('my.db')
conn_cursor = conn.cursor()
conn.text_factory = str

但是我怎样才能得到表的名称和它们的编码呢?

【问题讨论】:

  • The database's text encoding 以 4 字节 big-endian int 形式存储在 sqlite 数据库标头中的偏移量 56 处:header = open('my.db').read(100); import struct; encoding_type = struct.unpack('>i', header[56:60])[0]encoding_type 等于 1、2 或 3,分别对应于 UTF-8、UTF-16LE 或 UTF-16BE。
  • 手动打开 SQLite 数据库是获取损坏数据库的好方法。 Use the encoding pragma instead.

标签: python python-2.7 sqlite


【解决方案1】:

您可以使用此查询来获取表名。

res = conn.execute("SELECT name FROM sqlite_master WHERE type='table';")
for name in res.fetchall():
    print(name[0])

【讨论】:

  • 好的。然后打印值我应该调用它fetchall?但它只返回一个空列表[]
  • @krzyhub 检查我的编辑。
  • 没有打印任何东西,但由于某种原因,这似乎是我在其他地方没有意识到的错误。不过谢谢。
  • @krzyhub 对于新创建的数据库,我们需要先提交。
猜你喜欢
  • 2010-11-07
  • 2013-07-31
  • 1970-01-01
  • 2023-01-20
  • 1970-01-01
  • 2014-07-20
相关资源
最近更新 更多