Я работал над своим школьным проектом, который требовал от меня разработки API на Flask. Я использовал MySQL с Flask SQLAlchemy. После того, как я закончил проект, я не прикасался к нему месяц. Когда я вернулся и попытался запустить его, я обнаружил, что он не создает таблицы сам по себе.
Что я проверил:
app.py файл:
import logging
from os import environ
from flask import Flask
from flask_cors import CORS
from flask_restful import Api
from flask_sqlalchemy import SQLAlchemy
from config import DevConfig, ProdConfig
db = SQLAlchemy()
def create_app():
from resources import Area, Map, Ping, SensorData
env = environ.get('ENVIRONMENT')
if env == 'DEVELOPMENT':
Config = DevConfig
else:
Config = ProdConfig
app = Flask(__name__)
app.config.from_object(Config())
CORS(app)
logging.basicConfig(
filename='app.log',
level=logging.INFO
)
api = Api(app)
api.add_resource(Area, '/area')
api.add_resource(Map, '/map')
api.add_resource(SensorData, '/api/v1/saveSensorData')
api.add_resource(Ping, '/ping')
db.init_app(app)
with app.app_context():
from models import AreaModel, SensorDataModel
db.create_all()
return app
if __name__ == '__main__':
app = create_app()
app.run(host='0.0.0.0', port=8080)
Одна из моделей:
from app import db
from datetime import datetime
class AreaModel(db.Model):
__tablename__ = 'area_records'
id = db.Column(
db.Integer,
primary_key=True
)
aqi = db.Column(
db.Integer,
)
latitude = db.Column(
db.String(16),
)
longitude = db.Column(
db.String(16),
)
created = db.Column(
db.DateTime,
default=datetime.now()
)
@roganjosh Я обновил пост с одной из моделей






Я нашел решение, но не ответ. По какой-то причине, когда я запускаю app.py напрямую, используя python app.py, он не создает никаких таблиц. Но когда я создал run.py с помощью этого кода:
from app import create_app
app = create_app()
app.run(host='0.0.0.0', port=8080)
Это сработало! Я надеюсь, что кто-то может объяснить это, но я очень рад, что нашел решение.
Вы не привели пример таблицы. Эти классы наследуются от
db.Model?