Я пытаюсь подключить мое приложение фляги к моей локальной базе данных MySQL для тестирования. Я создал объект фляги и класс для представления примера таблицы, которая будет создана после успешного подключения.
Это мои локальные переменные env для моего проекта:
#.env
LOCAL_MYSQL_URL = mysql://Username:somePassword@127.0.0.1:3306/database_name
SECRET_KEY = 'someverylongstring'
Этоmy project_name __init__
file:
#__init__.py
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
import os
ON_HEROKU = 'ON_HEROKU' in os.environ
if ON_HEROKU:
DB_URL = os.environ.get('CLEARDB_DATABASE_URL')
else:
DB_URL = os.environ.get('LOCAL_MYSQL_URL')
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = DB_URL
app.config['SECRET_KEY'] = os.environ.get('SECRET_KEY')
db = SQLAlchemy(app)
class User(db.Model):
__tablename__ = 'example'
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(80), unique=True)
email = db.Column(db.String(120), unique=True)
def __init__(self, username, email):
self.username = username
self.email = email
def __repr__(self):
return '<User %r>' % self.username
db.create_all()
db.session.commit()
admin = User('admin', 'admin@example.com')
guest = User('guest', 'guest@example.com')
db.session.add(admin)
db.session.add(guest)
db.session.commit()
users = User.query.all()
print(users)
И, наконец, это моя точка входа:
#run.py
from project_name import app
if __name__ == '__main__':
app.run(debug=True)
Однако я получаю следующую ошибку после длинной трассировки стека в библиотеке SQLAlchemy:
if sa_url.drivername.startswith('mysql'):
AttributeError: 'NoneType' object has no attribute 'drivername'
Я пытаюсь сделать эту работу, следуя учебным пособиям и ответам, приведенным здесь на stackoverlow к аналогичным вопросам, но ни один из них не помог мне до сих пор.
Что мне здесь не хватает? Что не так с моим именем драйвера mysql?