Вопрос

Я видел несколько модулей postgresql для Python, таких как pygresql, pypgsql, psyco.Большинство из них совместимы с Python DB API 2.0, некоторые больше не разрабатываются активно.Какой модуль порекомендуете?Почему?

Это было полезно?

Решение

psycopg2 кажется самым популярным.У меня никогда не было с этим проблем.На самом деле для PostgreSQL также существует чистый интерфейс Python, называемый bpgsql.Я бы не рекомендовал его вместо psycopg2, но недавно он стал достаточно способен поддерживать Django и полезен, если вы не можете скомпилировать модули C.

Другие советы

Я предлагаю Psycopg вместо Psycopg2, поскольку первый кажется более соболиным.По крайней мере, по моему опыту.У меня есть приложение, работающее круглосуточно и без выходных, и иногда у меня возникали случайные сбои памяти (двойное освобождение или ошибки повреждения) от Psycopg2.Ничего, что я мог бы быстро и легко отладить, поскольку это не ошибка Python, а ошибка C.Я только что переключился на Pyscopg, и после этого у меня не было никаких сбоев.

Кроме того, как сказано в другом посте, bpgsql кажется очень хорошей альтернативой.Он стабилен и прост в использовании, поскольку вам не нужно его компилировать.Единственная плохая сторона заключается в том, что библиотека не является потокобезопасной.

Pygresql кажется хорошим, есть более прямой способ запроса базы данных с помощью этой библиотеки.Но я не знаю, насколько он стабилен.

Psycopg1 известен своей лучшей производительностью в многопоточных средах (например, веб-приложениях), чем Psycopg2, хотя и не поддерживается.Оба хорошо написаны и надежны, я бы выбрал один из этих двух в зависимости от варианта использования.

По моему опыту, psycopg2 — наиболее часто используемая для этого библиотека.Как вы сказали, он совместим с DB API 2.0, что обеспечивает надежный интерфейс для работы.

Для тех, кому стандартный API кажется слишком многословным и с ним сложно работать, я создал небольшую библиотеку, которая может помочь:

https://github.com/hugollm/rebel

Я использую только psycopg2 и с этим проблем не возникло.

Я использовал pg8000 без каких-либо проблем в течение последних 3 лет.Он обновлен и доступен на pypi и работает как на python2, так и на python3.Вы можете использовать «pip install pg8000», чтобы быстро получить его (не забудьте использовать --proxy=yourproxy:yourport, если вы находитесь за брандмауэром).

Если вас беспокоит потокобезопасность, он также дает оценку потокобезопасности (см.: http://pybrary.net/pg8000/dbapi.html и https://www.python.org/dev/peps/pep-0249/ для определения различных уровней потокобезопасности) (хотя я еще не использовал потоки с psql).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top