Flask SQLAlchemy MySQL ошибка подключения к базе данных - PullRequest
0 голосов
/ 06 мая 2020

Возможно, об этом спрашивали раньше, но я не смог исправить свою ошибку из предыдущих ответов. Я проверил файлы журнала для своего приложения и обнаружил, что ошибка «NoneType» не имеет атрибута «имя драйвера», который, кажется, указывает на неправильный URI моей базы данных. Однако я не раз проверял это. Приложение работает в экземпляре AWS Lightsail Ubuntu с базой данных MySQL. Я установил свою конфигурацию через файл .env. Вот это показано ниже (где пароль - это фактический пароль):

DATABASE_URL = mysql+pymysql://root:<password>@localhost/kickoff


Затем я читаю это через свой файл config.py, который используется для создания приложения. У меня нет проблем в этом процессе, поскольку журнал ошибок (показанный ниже) показывает, что он смог получить доступ к этой базе данных, поскольку ошибка ссылается на mysql.

2020-05-06 15:43:57,970 ERROR: Exception on /auth/login [POST] [in /home/ubuntu/kickoff/venv/lib/python3.5/site-packages/flask/app.py:1891]
Traceback (most recent call last):
  File "/home/ubuntu/kickoff/venv/lib/python3.5/site-packages/sqlalchemy/util/_collections.py", line 1030, in __call__
    return self.registry[key]
KeyError: 139881159075584

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/ubuntu/kickoff/venv/lib/python3.5/site-packages/flask/app.py", line 2446, in wsgi_app
    response = self.full_dispatch_request()
  File "/home/ubuntu/kickoff/venv/lib/python3.5/site-packages/flask/app.py", line 1951, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/home/ubuntu/kickoff/venv/lib/python3.5/site-packages/flask/app.py", line 1820, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/home/ubuntu/kickoff/venv/lib/python3.5/site-packages/flask/_compat.py", line 39, in reraise
    raise value
  File "/home/ubuntu/kickoff/venv/lib/python3.5/site-packages/flask/app.py", line 1949, in full_dispatch_request
    rv = self.dispatch_request()
  File "/home/ubuntu/kickoff/venv/lib/python3.5/site-packages/flask/app.py", line 1935, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/home/ubuntu/kickoff/app/auth/routes.py", line 11, in login
    user = User.query.filter_by(username = form.username.data).first()
  File "/home/ubuntu/kickoff/venv/lib/python3.5/site-packages/flask_sqlalchemy/__init__.py", line 519, in __get__
    return type.query_class(mapper, session=self.sa.session())
  File "/home/ubuntu/kickoff/venv/lib/python3.5/site-packages/sqlalchemy/orm/scoping.py", line 78, in __call__
    return self.registry()
  File "/home/ubuntu/kickoff/venv/lib/python3.5/site-packages/sqlalchemy/util/_collections.py", line 1032, in __call__
    return self.registry.setdefault(key, self.createfunc())
  File "/home/ubuntu/kickoff/venv/lib/python3.5/site-packages/sqlalchemy/orm/session.py", line 3254, in __call__
    return self.class_(**local_kw)
  File "/home/ubuntu/kickoff/venv/lib/python3.5/site-packages/flask_sqlalchemy/__init__.py", line 138, in __init__
    bind = options.pop('bind', None) or db.engine
  File "/home/ubuntu/kickoff/venv/lib/python3.5/site-packages/flask_sqlalchemy/__init__.py", line 937, in engine
    return self.get_engine()
  File "/home/ubuntu/kickoff/venv/lib/python3.5/site-packages/flask_sqlalchemy/__init__.py", line 956, in get_engine
    return connector.get_engine()
  File "/home/ubuntu/kickoff/venv/lib/python3.5/site-packages/flask_sqlalchemy/__init__.py", line 560, in get_engine
    options = self.get_options(sa_url, echo)
  File "/home/ubuntu/kickoff/venv/lib/python3.5/site-packages/flask_sqlalchemy/__init__.py", line 575, in get_options
    self._sa.apply_driver_hacks(self._app, sa_url, options)
  File "/home/ubuntu/kickoff/venv/lib/python3.5/site-packages/flask_sqlalchemy/__init__.py", line 877, in apply_driver_hacks
    if sa_url.drivername.startswith('mysql'):
AttributeError: 'NoneType' object has no attribute 'drivername'


Заранее большое спасибо!

...