gpt4 book ai didi

python - 如果 Flask 上不存在表,如何使用 SQLAlchemy 创建表?

转载 作者:行者123 更新时间:2023-12-05 00:56:10 36 4
gpt4 key购买 nike

我正在使用 SQLAlchemy,并且我有以下代码:

型号:

class User(db.Model):
__tablename__ = 'user'
__table_args__ = {'schema': 'task', 'useexisting': True}
id = Column(Integer, primary_key=True, autoincrement=True)
firstname = Column(String)

.env

SQLALCHEMY_DATABASE_URI = os.getenv('SQLALCHEMY_DATABASE_URI')

app.py

def create_app(config_file):
"""Create a Flask application using the app factory pattern."""

app = Flask(__name__)

"""Load configuration."""

app.config.from_pyfile(config_file)

"""Init app extensions."""
from .extensions import db

db.init_app(app)

如果 SQLite 文件不存在,则会创建它,但不会创建每个模型的表。

问题是我该怎么做才能为每个模型创建表?

最佳答案

只需添加:

db.create_all()

app.py 末尾的 create_app() 中。

create_all() 只会在表不存在时创建表,并且不会更改之前创建的表。

如果您想从命令行创建数据库和表,您只需键入:

python
from app.py import db
db.create_all()
exit()

工作示例:

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.secret_key = "Secret key"
app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///my_database.sqlite3"
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False

db = SQLAlchemy(app)

class Data(db.Model):
id = db.Column(db.Integer, primary_key = True)
name = db.Column(db.String(50))
email = db.Column(db.String(50))
phone = db.Column(db.String(50))

db.create_all()

# add a row
# comment out after the 1st run
table_row = Data(name="My Name", email="myemail@mail.com", phone="123456")
db.session.add(table_row)
db.session.commit()
print "A row was added to the table"

# read the data
row = Data.query.filter_by(name="My Name").first()
print "Found:", row.email, row.phone

if __name__ == "__main__":
app.run(debug=True)

这适用于 Python 2.7,要在 Python 3.x 上运行,只需更改 print 语句以调用 print() 函数。

注意:
使用自动模型类构造函数时,传递给模型类构造函数的参数必须keyword参数,否则会出错。否则,您可以像这样覆盖 Data() 类中的 __init__() :

def __init__(self, name, email, phone, **kwargs):
super(Data, self).__init__(**kwargs)
self.name = name
self.email = email
self.phone = phone

在这种情况下,您不必使用 keyword 参数。

关于python - 如果 Flask 上不存在表,如何使用 SQLAlchemy 创建表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62741661/

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