колба, не может мигрировать. 'SQLALCHEMY_DATABASE_URI'). Replace ('%', '%%')) AttributeError: у объекта 'NoneType' нет атрибута 'replace' - PullRequest
1 голос
/ 09 ноября 2019

Я пытаюсь сделать приложение, следуя этому руководству. https://www.codementor.io/olawalealadeusi896/restful-api-with-python-flask-framework-and-postgres-db-part-1-kbrwbygx5 Но я застрял при запуске миграции с "python manage.py db migrate". Я получаю эти ошибки, не могу понять их значение,и не знаю, как решить эту проблему, потому что я совершенно новый в python.

FSADeprecationWarning: SQLALCHEMY_TRACK_MODIFICATIONS adds significant overhead and will be disabled by default in the future.  Set it to True or False to suppress this warning.

'SQLALCHEMY_TRACK_MODIFICATIONS добавляет значительные накладные расходы и'

Traceback (most recent call last):
  File "manage.py", line 17, in <module>
    manager.run()
  File "/home/jebbyk/.local/share/virtualenvs/blog_rest-pkqspueH/lib/python3.6/site-packages/flask_script/__init__.py", line 417, in run
    result = self.handle(argv[0], argv[1:])
  File "/home/jebbyk/.local/share/virtualenvs/blog_rest-pkqspueH/lib/python3.6/site-packages/flask_script/__init__.py", line 386, in handle
    res = handle(*args, **config)
  File "/home/jebbyk/.local/share/virtualenvs/blog_rest-pkqspueH/lib/python3.6/site-packages/flask_script/commands.py", line 216, in __call__
    return self.run(*args, **kwargs)
  File "/home/jebbyk/.local/share/virtualenvs/blog_rest-pkqspueH/lib/python3.6/site-packages/flask_migrate/__init__.py", line 95, in wrapped
    f(*args, **kwargs)
  File "/home/jebbyk/.local/share/virtualenvs/blog_rest-pkqspueH/lib/python3.6/site-packages/flask_migrate/__init__.py", line 215, in migrate
    version_path=version_path, rev_id=rev_id)
  File "/home/jebbyk/.local/share/virtualenvs/blog_rest-pkqspueH/lib/python3.6/site-packages/alembic/command.py", line 214, in revision
    script_directory.run_env()
  File "/home/jebbyk/.local/share/virtualenvs/blog_rest-pkqspueH/lib/python3.6/site-packages/alembic/script/base.py", line 489, in run_env
    util.load_python_file(self.dir, "env.py")
  File "/home/jebbyk/.local/share/virtualenvs/blog_rest-pkqspueH/lib/python3.6/site-packages/alembic/util/pyfiles.py", line 98, in load_python_file
    module = load_module_py(module_id, path)
  File "/home/jebbyk/.local/share/virtualenvs/blog_rest-pkqspueH/lib/python3.6/site-packages/alembic/util/compat.py", line 173, in load_module_py
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 678, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "migrations/env.py", line 27, in <module>
    'SQLALCHEMY_DATABASE_URI').replace('%', '%%'))
AttributeError: 'NoneType' object has no attribute 'replace'

похоже, что основная проблемав этой строке в миграциях> env.py

config.set_main_option('sqlalchemy.url', current_app.config.get('SQLALCHEMY_DATABASE_URI').replace('%', '%%'))

, но каталог "migrations" был автоматически создан после запуска "python manage.py db init", и я не уверен, что он может содержать какие-либо ошибки

1 Ответ

0 голосов
/ 09 ноября 2019

После вашего примера . SQLALCHEMY_DATABASE_URI переменная получить из системной среды

SQLALCHEMY_DATABASE_URI = os.getenv('DATABASE_URL')

Итак. Вам нужно запустить следующее из своего терминала, чтобы установить системные переменные окружения

$ export DATABASE_URL= postgres://name:password@houst:port/blog_api_db
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...