could not determine data type of parameter $1 asyncpg
Прежде чем кидать мне ссылку или указывать вопрос как дубликат прочитайте.
Я пытаюсь сделать в asyncpg:
conn.fetchrow("SELECT * FROM table WHERE id=$2", None, id)
И получаю такую ошибку:
asyncpg.exceptions.IndeterminateDatatypeError: could not determine data type of parameter $1
И не важно какой тип данных передавать как первый параметр, число, строку, что-то ещё, результат 1. Это больше похоже на баг, если я передаю параметр который не используется, то всегда будет такая ошибка
Казалось бы. Просто сделай:
conn.fetchrow("SELECT * FROM table WHERE id=$1", id)
Но это очень неудобно и сложно при динамическом формировании запроса. Например:
def get_users_list(company_id, role_id=None):
where_conditions = ["true"]
if role_id:
where_conditions.append("role_id=$1")
users = conn.fetch(
f"""
SELECT *
FROM users
WHERE
company_id=$2 AND {" AND ".join(where_conditions)}
""",
role_id,
company_id
)
return [dict(user) for user in users]
Высчитывать какой номер надо дать аргументу будет очень сложно. Предвидя ответы "просто сделай role_id вторым аргументом и не передавай если условие не выполняется". А если таких аргументов как role_id много? Как мне понимать какой номер давать этому аргументу?