Вчера вышел релиз
А еще там теперь больше не поддерживаются Python 2.7, 3.4 и 3.5. Каждый раз радуюсь, когда очередная популярная библиотека перестаёт поддерживать Python 2.
https://www.psycopg.org/docs/news.html
#psycopg
psycopg2==2.9
— самого популярного питонячьего драйвера для СУБД PostgreSQL. Измнений не много, но они хорошие. В частности, починили старую проблему с открытием транзакций через контекст-менеджер, если соединение находится в autocommit mode
. Вы знали про autocommit mode
? Это чтобы не нужно было вручную завершать транзакцию через conn.commit()
или conn.rollback()
после каждого запроса.А еще там теперь больше не поддерживаются Python 2.7, 3.4 и 3.5. Каждый раз радуюсь, когда очередная популярная библиотека перестаёт поддерживать Python 2.
https://www.psycopg.org/docs/news.html
#psycopg
Если работаете с Python и PostgreSQL, то точно знакомы с
Циферка 2 в названии указывает на вторую версию. Сейчас автор библиотеки (Daniele Varrazzo) очень активно работает над следующей, третьей версией, написанной с нуля, несовместимой с предыдущей версией, зато с новыми полезными фичами и исправлениями давних решений в плане API и принципа работы.
Например,
* поддерживает
* полностью обмазан тайп-аннотациями 🥰;
* умеет делать подготовленные выражения (prepared statements) и курсоры на стороне сервера.
Вот тут можно посмотреть презентацию новой версии от автора: https://www.youtube.com/watch?v=XH5_Hc_BHaE
А вот здесь инструкция, как можно установить и пощупать бета-версию уже сейчас: https://twitter.com/psycopg/status/1410221901323063299?s=20
#psycopg
psycopg2
. Вот уже наверное 15 лет это самый популярный драйвер для постгреса на питоне. Де-факто стандарт.Циферка 2 в названии указывает на вторую версию. Сейчас автор библиотеки (Daniele Varrazzo) очень активно работает над следующей, третьей версией, написанной с нуля, несовместимой с предыдущей версией, зато с новыми полезными фичами и исправлениями давних решений в плане API и принципа работы.
Например,
psycopg3
:* поддерживает
async/await
из коробки; пожалуй, учитывая позитивный опыт работы с psycopg2
, я делаю ставку на этот драйвер для асинхронных приложений (aiopg
и asyncpg
далеко не идеальны, к сожалению);* полностью обмазан тайп-аннотациями 🥰;
* умеет делать подготовленные выражения (prepared statements) и курсоры на стороне сервера.
Вот тут можно посмотреть презентацию новой версии от автора: https://www.youtube.com/watch?v=XH5_Hc_BHaE
А вот здесь инструкция, как можно установить и пощупать бета-версию уже сейчас: https://twitter.com/psycopg/status/1410221901323063299?s=20
#psycopg
YouTube
z2d2 07 Varrazzo ENG
20150923 «Тема». Семинар
Похоже, в отличие от меня, половина людей все-таки внимательно читает документацию (хотя я так и не нашел, где бы это было упомянуто явно), и знает, что
В целом, наверное, нет особой разницы, где происходит подстановка данных в запрос. Если на стороне клиента это сделано хорошо, то оно может быть точно так же безопасно, как и server-side binding. Но всё-таки остаётся какая-то вероятность, что
#psycopg
psycopg2
делает client-side binding. Для меня это сегодня стало новостью. Я почему-то был уверен, что psycopg2
просто делегирует подстановку данных в запрос серверу БД через подготовленные выражения.В целом, наверное, нет особой разницы, где происходит подстановка данных в запрос. Если на стороне клиента это сделано хорошо, то оно может быть точно так же безопасно, как и server-side binding. Но всё-таки остаётся какая-то вероятность, что
psycopg2
вычищает/экранирует не все опасные символы из данных. Вот будет веселье-то, если вдруг такое обнаружится. А если данные попадают в уже распаршенный запрос на стороне сервера, то это уже гарантированно, что они не смогут поменять логику запроса (уже слишком поздно для этого).psycopg
третьей версии будет делать server-side binding, хотя для нас (программистов) интерфейс не поменяется.#psycopg
Psycopg3 — новая долгожданная версия самого популярного и стабильного драйвера для PostgreSQL на питоне — зреет на наших глазах. Автор (Daniele Varrazzo) недавно выложил первый бета-релиз на настоящий PyPI. До этого были только релизы на тестовом PyPI.
https://www.psycopg.org/articles/2021/08/30/psycopg-30-beta1-released/
#psycopg
https://www.psycopg.org/articles/2021/08/30/psycopg-30-beta1-released/
#psycopg
Вышел стабильный релиз
🐍 + 🐘 = 🎉
https://twitter.com/psycopg/status/1447962001121157133?s=21
#psycopg
psycopg==3.0
. Можно пробовать внедрять в свои проекты.pip install --upgrade pip # to upgrade pip
pip install psycopg[binary,pool] # to install package and dependencies
🐍 + 🐘 = 🎉
https://twitter.com/psycopg/status/1447962001121157133?s=21
#psycopg
Twitter
psycopg
Well, I don't know what to say, I've lost all the source code, the cat has eaten the backup... Nope! Not true! #Psycopg3 released!!! 🥳🥳🥳 Too happy for a serious message right now. Not sorry. #Python #PostgreSQL #FreeSoftware
Достаточно сильные аргументы против вставки значений напрямую в SQL-запросы.
Документация
#psycopg
Документация
psycopg
снова радует. С каждой версией её становится всё интереснее читать.#psycopg