您好我正在尝试使用 SQLAlchemy 创建数据库及其表,为此我有以下代码和结构:
.
├── api
│ ├── api.py
│ ├── config.py
│ ├── connector.py
│ ├── detector
│ │ ├── __init__.py
│ │ └── route.py
│ └── user
│ ├── __init__.py
│ └── model.py
├── database.db
├── manager.py
├── queue
│ ├── __init__.py
│ └── queue.py
└── requirements.txt
要求:
dictalchemy~=0.1.2.7
Flask-RESTful
redis
Flask-SQLAlchemy
Flask-Script
Flask-Migrate
python-dotenv
SQLAlchemy~=1.3.18
Flask~=1.1.2
flask-cors
用户模型
from sqlalchemy import Column
from sqlalchemy import Integer
from sqlalchemy import Text
from api.connector import BaseModel, engine
class User(BaseModel):
__tablename__ = 'users'
id = Column(
Integer,
name='id',
nullable=False,
primary_key=True,
autoincrement=True,
)
email = Column(
Text,
name='email',
)
Base.metadata.create_all(engine)
连接器
from contextlib import contextmanager
import functools
from dictalchemy import DictableModel
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
engine = create_engine("sqlite:///database.db", echo=True)
_db_session = sessionmaker(bind=engine)
BaseModel = declarative_base(cls=DictableModel)
api
from flask import Flask
from flask_restful import Api
from api.detector.route import Detector
from flask_cors import CORS
app = Flask(__name__)
api = Api(app)
cors = CORS(app, resources={r"/api/*": {"origins": "*"}})
api.add_resource(检测器,'/api/v1.0/det')
经理
from api.api import app
from flask_script import Manager
from api.connector import engine, BaseModel
from api.detector.route import Detector
manager = Manager(app)
app.config['DEBUG'] = True
@manager.command
def create_tables():
"Create relational database tables."
BaseModel.metadata.create_all(engine)
if __name__ == '__main__':
manager.run()
为了创建表,我使用了这个 python manager.py create_tables,它返回:
2020-07-23 00:45:15,815 信息 sqlalchemy.engine.base.Engine SELECT CAST('test plain return' AS VARCHAR(60)) AS anon_1 2020-07-23 00:45:15,815 INFO sqlalchemy.engine.base .Engine () 2020-07-23 00:45:15,816 INFO sqlalchemy.engine.base.Engine SELECT CAST('test unicode returns' AS VARCHAR(60)) AS anon_1 2020-07-23 00:45:15,816 INFO sqlalchemy .engine.base.Engine()
数据库文件已创建,但为空。
为什么模型没有加载到数据库中?
谢谢。