1. Для переписывания SQL запроса для использования в библиотеке SQLAlchemy, вы можете использовать объекты и методы SQLAlchemy для построения запроса. Например, вместо написания SQL запроса в виде строки, вы можете создать объект запроса, используя методы `query` и `filter`.
Пример:
SQL запрос:
```sql
SELECT * FROM users WHERE age > 18;
```
SQLAlchemy запрос:
```python
from sqlalchemy import create_engine, Table, Column, Integer, String, MetaData
engine = create_engine('sqlite:///:memory:')
metadata = MetaData()
users = Table('users', metadata,
Column('id', Integer, primary_key=True),
Column('name', String),
Column('age', Integer))
# Создание объекта запроса с фильтром
query = users.select().where(users.c.age > 18)
# Выполнение запроса
result = engine.execute(query)
for row in result:
print(row)
```
2. Ошибка `sqlalchemy.exc.ArgumentError: SQL expression for WHERE/HAVING role expected, got (, )` часто возникает при передаче неверных аргументов в метод `filter` или `filter_by` в SQLAlchemy. Убедитесь, что вы передаете правильное выражение SQLAlchemy в эти методы.
Примеры неправильных аргументов:
```python
# Неправильное использование filter с недопустимым выражением
query = users.filter(users.c.age, 18)
# Неправильное использование filter_by с недостающим значением
query = users.filter_by(age=18, name)
```
Используйте подходящие выражения SQLAlchemy в методах `filter` и `filter_by`, чтобы избежать данной ошибки.