tko22/flask-boilerplate

Build currently fails on SQLAlchemy error

DGaffney opened this issue · 0 comments

When running docker-compose build & docker-compose up from the zipfile on a mac, I run into the following issue:

app         | Traceback (most recent call last):
app         |   File "manage.py", line 3, in <module>
app         |     from api import create_app
app         |   File "/app/api/__init__.py", line 7, in <module>
app         |     from sqlalchemy_utils import create_database, database_exists
app         |   File "/usr/local/lib/python3.7/site-packages/sqlalchemy_utils/__init__.py", line 1, in <module>
app         |     from .aggregates import aggregated  # noqa
app         |   File "/usr/local/lib/python3.7/site-packages/sqlalchemy_utils/aggregates.py", line 372, in <module>
app         |     from .functions.orm import get_column_key
app         |   File "/usr/local/lib/python3.7/site-packages/sqlalchemy_utils/functions/__init__.py", line 1, in <module>
app         |     from .database import (  # noqa
app         |   File "/usr/local/lib/python3.7/site-packages/sqlalchemy_utils/functions/database.py", line 10, in <module>
app         |     from ..expressions import explain_analyze
app         |   File "/usr/local/lib/python3.7/site-packages/sqlalchemy_utils/expressions.py", line 4, in <module>
app         |     from sqlalchemy.sql.expression import (
app         | ImportError: cannot import name '_literal_as_text' from 'sqlalchemy.sql.expression' (/usr/local/lib/python3.7/site-packages/sqlalchemy/sql/expression.py)
app         | Traceback (most recent call last):
app         |   File "manage.py", line 3, in <module>
app         |     from api import create_app
app         |   File "/app/api/__init__.py", line 7, in <module>
app         |     from sqlalchemy_utils import create_database, database_exists
app         |   File "/usr/local/lib/python3.7/site-packages/sqlalchemy_utils/__init__.py", line 1, in <module>
app         |     from .aggregates import aggregated  # noqa
app         |   File "/usr/local/lib/python3.7/site-packages/sqlalchemy_utils/aggregates.py", line 372, in <module>
app         |     from .functions.orm import get_column_key
app         |   File "/usr/local/lib/python3.7/site-packages/sqlalchemy_utils/functions/__init__.py", line 1, in <module>
app         |     from .database import (  # noqa
app         |   File "/usr/local/lib/python3.7/site-packages/sqlalchemy_utils/functions/database.py", line 10, in <module>
app         |     from ..expressions import explain_analyze
app         |   File "/usr/local/lib/python3.7/site-packages/sqlalchemy_utils/expressions.py", line 4, in <module>
app         |     from sqlalchemy.sql.expression import (
app         | ImportError: cannot import name '_literal_as_text' from 'sqlalchemy.sql.expression' (/usr/local/lib/python3.7/site-packages/sqlalchemy/sql/expression.py)

Looks like this happens on the line:

from sqlalchemy_utils import create_database, database_exists

In api/__init__.py. The solution appears to be to update requirements.txt with the following change:

sqlalchemy<1.4.0

According to this StackOverflow discussion: https://stackoverflow.com/questions/66644975/importerror-cannot-import-name-columnentity-from-sqlalchemy-orm-query