LINUX.ORG.RU

говнокод с asyncpg

 ,


0

4
async def notify_delete(channel, query, *, conn):
    status = await conn.execute(r'''DELETE FROM notify WHERE channel_id=$1 and query=$2''',
            snowflake2db(channel.id), query)
    return status != 'DELETE 0'

return status != 'DELETE 0'

насколько это плохо, и как надо правильно?

★★★★★

Последнее исправление: MyTrooName (всего исправлений: 2)

Ответ на: комментарий от deadNightTiger

ну, в данном случае ничего кроме 'DELETE 0' парсить не требуется. то есть так норм, постгрес ничего неожиданного выдать не может?

MyTrooName ★★★★★
() автор топика
Ответ на: комментарий от MyTrooName

Ну вообще может какой-нибудь error вернуть - может быть ошибка в параметрах, грантах, да «database read only» в конце концов. То есть если ты прям на 100% уверен в запросе и окружении то можно оставить, но по хорошему одной этой проверки не достаточно.

snowflake2db это что? А то первой ссылкой в гугле этот тред. Почему не использовать ORM?

micronekodesu ★★★
()
Ответ на: комментарий от micronekodesu

Ну вообще может какой-нибудь error вернуть - может быть ошибка в параметрах, грантах, да «database read only» в конце концов

во всех этих случаях, если я правильно понимаю, будет эксепшн

Почему не использовать ORM?

к asyncio нормальной либы не нашел. решил, что лучше прямой контроль над запросами и индексами

snowflake2db это что?

нерелевантно. просто преобразование формата данных из строки c uint64 в int64

MyTrooName ★★★★★
() автор топика
Ответ на: комментарий от MyTrooName

во всех этих случаях, если я правильно понимаю, будет эксепшн

Если ты используешь какой-нибудь там psycopg2 то да, только в таком случае тебе простого execute не хватит, надо потом прочитать результат через fetchall() например, да и вообще запрос надо выполнять не через подключение а через курсор. В любом случае, exception тоже же надо обработать.

micronekodesu ★★★
()
Ответ на: комментарий от micronekodesu

эксепшены можно пропускать выше по стеку. а зачем delete через курсор?

MyTrooName ★★★★★
() автор топика
Ответ на: комментарий от annerleen

return status == 'DELETE 1'

если больше одного стобцастроки нельзя удалить

в моем случае это так и есть, но вопрос в силе и для более общего случая

MyTrooName ★★★★★
() автор топика
Последнее исправление: MyTrooName (всего исправлений: 1)

Плохо. Правильно сделать запрос с RETURNING.

slovazap ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.