如何检查 Python 中是否存在 table?
How to check if a table exists in Python?
我目前正在学习网页设计课程。我想做的是检查我的数据库中是否存在名为 portafolio
的 table,如果不存在,我想创建一个。
我正在使用 Python (flask) 和 sqlite3 来管理我的数据库。
到目前为止,我使用 SQL 中的一些逻辑来创建一个 table 如果它不存在:
# 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 中进行完全相同的检查,因为它看起来更干净。
如有任何帮助,我们将不胜感激。
不确定哪种方法更干净,但您可以发出一个简单的 select 并处理异常:
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
是什么类型,并且我们必须在字符串检查中包含此 "not pretty" 消息子字符串,因为 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())
如果您正在寻找一份与数据库操作相关的工作,我建议您了解更多有关 ORM(对象关系模型)的知识。
我将 Flask 与 SQLAlchemy 一起使用。您可以使用 python 类 来管理 SQL 操作,如下所示:
class Portafolio(db.Model):
id = db.Column(db.Integer, primary_key=True)
stock = db.Column(db.String(255), unique=True)
shares = db.Column(db.Integer, unique=True)
它可以轻松完成所有数据库检查和迁移。
我目前正在学习网页设计课程。我想做的是检查我的数据库中是否存在名为 portafolio
的 table,如果不存在,我想创建一个。
我正在使用 Python (flask) 和 sqlite3 来管理我的数据库。
到目前为止,我使用 SQL 中的一些逻辑来创建一个 table 如果它不存在:
# 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 中进行完全相同的检查,因为它看起来更干净。
如有任何帮助,我们将不胜感激。
不确定哪种方法更干净,但您可以发出一个简单的 select 并处理异常:
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
是什么类型,并且我们必须在字符串检查中包含此 "not pretty" 消息子字符串,因为 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())
如果您正在寻找一份与数据库操作相关的工作,我建议您了解更多有关 ORM(对象关系模型)的知识。
我将 Flask 与 SQLAlchemy 一起使用。您可以使用 python 类 来管理 SQL 操作,如下所示:
class Portafolio(db.Model):
id = db.Column(db.Integer, primary_key=True)
stock = db.Column(db.String(255), unique=True)
shares = db.Column(db.Integer, unique=True)
它可以轻松完成所有数据库检查和迁移。