gpt4 book ai didi

python - 如何检查表是否存在于 Python 中?

转载 作者:太空宇宙 更新时间:2023-11-04 00:41:42 27 4
gpt4 key购买 nike

我目前正在学习网页设计类(class)。我想要做的是检查我的数据库中是否存在名为 portafolio 的表,如果不存在,我想创建一个。我正在使用 Python (flask) 和 sqlite3 来管理我的数据库。到目前为止,如果表不存在,我将使用 SQL 中的一些逻辑来创建表:

# db is my database variable
db.execute('''create table if not exists portafolio(id INTEGER PRIMARY KEY AUTOINCREMENT,
stock TEXT,
shares INTEGER,
price FLOAT(2),
date TEXT
''');

但我不想使用 SQL 命令,而是想知道如何在 Python 中进行完全相同的检查,因为它看起来更简洁。

如有任何帮助,我们将不胜感激。

最佳答案

不确定哪种方式更干净,但您可以发出一个简单的选择并处理异常:

try:
cursor.execute("SELECT 1 FROM portafolio LIMIT 1;")
exists = True
except sqlite3.OperationalError as e:
message = e.args[0]
if message.startswith("no such table"):
print("Table 'portafolio' does not exist")
exists = False
else:
raise

请注意,这里我们必须检查它是哪种类型的 OperationalError,并且我们必须在字符串检查中包含这个“不漂亮”的消息子字符串,因为 there is currently no way to get the actual error code .

或者,更多 SQLite specific approach :

table_name = "portafolio"
cursor.execute("""
SELECT name
FROM sqlite_master
WHERE type='table' AND name=?;
""", (table_name, ))

exists = bool(cursor.fetchone())

关于python - 如何检查表是否存在于 Python 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41687938/

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