【发布时间】:2020-05-14 04:03:46
【问题描述】:
我编写了一个测试 Flask 脚本,它只将 hello world 打印到屏幕上,效果很好。现在我决定通过首先创建数据库表来测试 SQLite 数据库。但是,似乎 create_all 创建数据库时没有错误,但 .tables 没有返回任何表。
以下是我的代码和包结构:
Run_test.py
│
└───Test
│ Model_test.py
│ requirements.txt
│ site_test.db
│ views.py
│ __init__.py
init.py如下:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_login import LoginManager
from flask_script import Manager
from flask_migrate import Migrate, MigrateCommand
app_test = Flask(__name__)
app_test.config['SECRET_KEY'] = '123456789'
app_test.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///site_test.db'
app_test.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db_test = SQLAlchemy(app_test)
migrate_test = Migrate(app_test, db_test)
manager_test= Manager(app_test)
manager_test.add_command('db_test',MigrateCommand)
login_manager_test= LoginManager(app_test)
login_manager_test.login_view = 'login'
login_manager_test.login_message_category = 'info'
以下也是Model_test.py:
from Test import db_test,app_test, login_manager_test
from flask_login import UserMixin,current_user
@login_manager_test.user_loader
def load_user(user_id):
return User.query.get(int(user_id))
class User(db_test.Model,UserMixin):
id = db_test.Column(db_test.Integer, primary_key=True)
name = db_test.Column(db_test.String(20), unique=True, nullable=False)
def __repr__(self):
return f"User('{self.name}')"
这也是 Run_Test.py :
from Test import app_test
from Test import views
from Test import Model_test
if __name__ == "__main__":
app_test.run(debug=True, port=8000)
我没有包含views.py,因为它只有一个功能并将hello world 打印到屏幕上。我可以在屏幕上成功看到 hello world。
但是当我去 python 并输入时:
from Test import db_test
db_test.create_all()
我可以成功创建数据库文件
但是当我这样做时
sqlite3 site_test.db
.tables
我一无所获,我的桌子也没有回来。
如果有人能向我解释我在这里做错了什么以及如何解决它,我真的很感激?
【问题讨论】:
标签: python sqlite flask flask-sqlalchemy