【发布时间】:2020-09-12 09:23:27
【问题描述】:
我一直在 talkpython 上学习 FLask/SQLalchemy 教程,但我无法让 SQLalchemy 创建我的 SQLite 数据库。
此时我怀疑它是否正在运行 main 方法,因为终端调试设置为 0,并且从未打印过 main() 的打印语句。
我真的不知道我做错了什么,站点午餐,我可以浏览它,但是在 db 文件夹中没有创建任何 SQLite 文件。
app.py:
import os
import flask
import data.db_session as db_session
app = flask.Flask(__name__)
def main():
print("print this if coming from main()")
setup_db()
app.run(debug=True)
def setup_db():
db_file = os.path.join(
os.path.dirname(__file__),
'db',
'database.sqlite')
db_session.global_init(db_file)
@app.route('/')
def frontpage():
return flask.render_template('index.html')
if __name__ == '__main__':
main()
db_session.py:
import sqlalchemy as sa
import sqlalchemy.orm as orm
from data.modelbase import SqlAlchemyBase
factory = None
def global_init(db_file: str):
global factory
if factory:
return
if not db_file or not db_file.strip():
raise Exception("You must specify a db file.")
conn_str = 'sqlite:///' + db_file.strip()
print("Connecting to DB with {}".format(conn_str))
engine = sa.create_engine(conn_str, echo=False, connect_args={"check_same_thread": False})
factory = orm.sessionmaker(bind=engine)
# noinspection PyUnresolvedReferences
from data.location import Location
SqlAlchemyBase.metadata.create_all(engine)
终端输出:
FLASK_APP = app.py
FLASK_ENV = development
FLASK_DEBUG = 0
In folder C:/Users/******/OneDrive/*********
"C:\Users\****\Anaconda3\envs\********\python.exe" -m flask run
* Serving Flask app "app.py"
* Environment: development
* Debug mode: off
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
【问题讨论】:
标签: python flask sqlalchemy pycharm