MagicStack / MagicStack/asyncpg
Unable to use f-string in SqlAlchemy ORM
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- Python
- Estrellas
- 8.1k
- Forks
- 469
- Merge medio
- 18 min
- PR fusionados (30 d)
- 4
Descripción
- asyncpg version: 0.23.0
- PostgreSQL version: 12
- Python version: 3.9.4
- Platform: OSX
- Do you use pgbouncer?: No
- Did you install asyncpg with pip?: pipenv
- If you built asyncpg locally, which version of Cython did you use?: N/A
- Can the issue be reproduced under both asyncio and
uvloop?: N/A
I'm trying to build a SQL statement with LIKE expression and a pattern but I'm getting an error.
Here is what I had in the code originally:
statement = select(Customer).options(sqlalchemy.orm.joinedload(Customer.transactions)).where(Customer.l_name.ilike(name))
and this worked great.
But if I want to use this statement with a % pattern like this:
statement = f'select(Customer).options(sqlalchemy.orm.joinedload(Customer.transactions)).where(Customer.l_name.ilike("%{name}%"))'
I get this error:
sqlalchemy.exc.ProgrammingError: (sqlalchemy.dialects.postgresql.asyncpg.ProgrammingError) <class 'asyncpg.exceptions.PostgresSyntaxError'>: syntax error at or near "("
[SQL: select(Customer).options(sqlalchemy.orm.joinedload(Customer.transactions)).where(Customer.l_name.ilike("%%turing%%"))]
It does substitute the variable with a parameter but for some reason it adds an extra pair of percent signs and crashes.
How can I solve this problem?
Guía de contribución
No hay ninguna guía de contribución indexada para este repositorio
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Línea de trabajo
No se menciona ningún archivo, prueba ni punto de entrada de asyncpg. Comienza con la expresión de SQLAlchemy proporcionada y el SQL generado; después, verifica si el comportamiento se reproduce en asyncpg o si proviene de construir la instrucción ORM como una cadena; confirma el resultado con las versiones indicadas de PostgreSQL y asyncpg.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- postgresql, python
- Área
- databases
- Tipo de issue
- Error
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Estado de actividad
- Estancado
- Claridad
- Necesita aclaración
- Aptitud para principiantes
- 22/100