gpt4 book ai didi

python - 从空表中获取列名列表

转载 作者:IT王子 更新时间:2023-10-29 06:22:39 26 4
gpt4 key购买 nike

<分区>

我正在使用 Python 的 sqlite3 模块,并希望在表没有任何行时获取表中所有列的列表。

通常,如果我像这样创建一个数据库

import sqlite3

conn = sqlite3.connect(":memory:")
c = conn.cursor()

# create the table schema
c.execute('''create table stocks
(date text, trans text, symbol text,
qty real, price real)''')

conn.commit()
c.close()

然后我可以用类似的东西得到列名

conn.row_factory = sqlite3.Row
c = conn.cursor()
c.execute('select * from stocks')
r = c.fetchone()
print r.keys()

问题是,如果表最初是空的,c.fetchone() 返回None。如果有已提交的行,那么我可以获得列名列表。

还有其他方法吗?我通过了官方的sqlite3 module documentation , 但在这方面找不到任何有用的东西。

我想我可以在表中放置一些虚拟数据,然后检索列名,然后删除该行,但我希望有一种更优雅的方法来做到这一点。

编辑:

似乎有几种方法可以做到这一点:

  1. 获取用于创建表的 SQL:

    c.execute("""SELECT sql FROM sqlite_master 
    WHERE tbl_name = 'stocks' AND type = 'table'""")
  2. 使用 sqlite3 中的 PRAGMA 语句:

    c.execute("PRAGMA table_info(stocks)")
  3. 使用Cursor对象的.description字段

    c.execute('select * from stocks')
    r=c.fetchone()
    print c.description

其中,No.2 似乎是最简单直接的。感谢大家的帮助。

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com