只需添加:
db.create_all()
in 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="[email protected]", 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()
功能。
NOTE:
使用时自动的模型类构造函数传递给模型类构造函数的参数must be keyword
争论,否则会出现错误。否则你可以覆盖__init__()
inside Data()
像这样的类:
def __init__(self, name, email, phone, **kwargs):
super(Data, self).__init__(**kwargs)
self.name = name
self.email = email
self.phone = phone
在这种情况下你不必使用keyword
论据。