Я так много раз делал это раньше успешно, но внезапно я не могу заставить это работать. Я создаю таблицы в своей базе данных MySQL, используя Flask SQLAlchemy в качестве посредника. Также используется адаптер pymysql
.
Не могли бы вы проверить правильность моей "сантехники"?
my init .py:
import werkzeug
werkzeug.cached_property = werkzeug.utils.cached_property
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_bcrypt import Bcrypt
from .config import DevConfig
db = SQLAlchemy()
bcrypt = Bcrypt()
def create_app(script_info=None):
app = Flask(__name__)
app.config.from_object(DevConfig)
bcrypt.init_app(app)
db.init_app(app)
from .flask_app import users_blueprint
app.register_blueprint(users_blueprint)
@app.shell_context_processor
def ctx():
return {'app': app, 'db': db}
return app
models.py:
from project import db, bcrypt
class User(db.Model):
__tablename__ = 'users'
...
...
config.py:
import os
class BaseConfig:
SQLALCHEMY_TRACK_MODIFICATIONS = False
SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://mark:supersecret@localhost/database1?charset=utf8mb4' # the "?charset" thingy is there to avoid encoding warnings from SQLAlchemy
SECRET_KEY = 'pythonrocks'
class DevConfig(BaseConfig):
DEBUG = True
class ProdConfig(BaseConfig):
DEBUG = False
интерпретатор:
Instance: /home/mark/project/instance
In [1]: db
Out[1]: <SQLAlchemy engine=mysql+pymysql://mark:***@localhost/database1?charset=utf8mb4>
In [2]: db.create_all()
In [3]: db.session.commit()
Я не получаю сообщения об ошибке. Таблицы просто не создаются при фиксации.
mysql> show tables;
Empty set (0.00 sec)
Как я могу проверить причину этого? Сервер разработки запущен.