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

2024-04-19 12:59:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在复习网页设计课程。我要做的是检查数据库中是否存在名为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中执行完全相同的检查,因为它看起来更干净。在

任何帮助都将不胜感激。在


Tags: text数据库网页flaskdbsqlismy
2条回答

如果您正在寻找一个整洁的数据库操作工作,我建议您了解更多有关ORM(对象关系模型)的知识。在

我用带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)

它可以轻松地完成所有的数据库检查和迁移。在

不确定哪种方式更干净,但您可以发出一个简单的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,并且我们必须在字符串检查中使用这个“不漂亮”的消息子串,因为there is currently no way to get the actual error code。在

或者,再来一个SQLite specific approach

^{pr2}$

相关问题 更多 >