pymssql против pyodbc против adodbapi против...

Я относительно плохо знаком с базами данных, выполняю SQL-запросы и т. Д. В настоящее время я использую исключительно MS SQL Server для своих БД (это то, что мы используем в моей работе), но, надеюсь, ответы на мой вопрос могут быть более общими, чем просто для этого конкретная БД.

Я выполняю большую часть своей работы, используя само приложение интерфейса БД (в данном случае, SQL Server Management Studio), но я также выполняю некоторую работу с помощью скриптов Python, некоторые из которых выполняются как задания cron, некоторые из которых являются веб-сайтами, так что пользователи могут отправлять запросы в БД.

Я использовал модуль pymssql для запросов и записи в БД из Python. Но есть несколько досадных проблем, с которыми я сталкиваюсь. (Кажется, что pymssql не может использовать временные таблицы, а также у меня были проблемы с "autocommit", но это, вероятно, моя собственная ошибка.)

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

  • используйте pymssql, который общается напрямую с серверами MS SQL
  • используйте pyodbc, который требует сначала установить FreeTDS & unixODBC и настроить их
  • используйте модуль adodbapi, и я не уверен, какие требования здесь необходимы.
  • другой метод??

Дело в том, что я ПОЛНОСТЬЮ не понимаю, что делает ODBC. Это похоже на своего рода "посредника аутентификации", своего рода посредника, который гарантирует, что пользователь - это то, кем он / она говорит. И у меня еще меньше понимания ADO.

В то время как pymssql кажется самым простым способом, он также кажется тем, о котором люди думают менее высоко, и что в конечном итоге он будет устаревшим. Я бы лучше выучил "правильный" путь, так как я в основном только начинаю с этого материала.

Поэтому я ищу некоторые осведомленные мнения о том, как заставить Python общаться с MS SQL Server и вообще общаться с БД. Я бы определил "лучшее" как лучшее для того, кто будет делать с ним умеренно сложные вещи. (Хотя я только начинаю, это то, что мне в конечном итоге придется увеличить совсем немного.)

Спасибо! Майк

2 ответа

Решение

pyodbc (рекомендуется)

Я начал использовать этот модуль несколько месяцев назад и до сих пор не имею жалоб. Сообщество разработчиков кажется более активным, чем pymssql. У меня не было проблем с установкой (32-битная Win XP и 64-битная версия Server 2008 R2). Вы получите дополнительное преимущество, заключающееся в том, что вы не ограничены серверами MS SQL.

Вы можете найти: http://www.lfd.uci.edu/~gohlke/pythonlibs/ полезным, если вы устанавливаете на Windows.

pymssql

Я работал с версией 1.x около 2,5 лет. У меня были небольшие проблемы с ограничениями размера для больших объектов. Я также столкнулся с огромными проблемами при многопоточности (до такой степени, что я должен был выключить, если выключен). 1.x был основан на устаревших библиотеках MS. Однако, последняя версия 2.x и больше не использует эти устаревшие библиотеки. Вместо этого он использует FreeTDS (например, pyodbc). Звучит хорошо, но я еще не пробовал.

adodbapi

Я пытался отключить pymssql и заменить его на adodbapi около года назад, и некоторые из запросов, которые работали нормально с pymssql, не дали результатов без видимой причины. Я быстро снова отказался от адодбапи.

По моему опыту, PYODBC в наши дни немного проблематичен. Во-первых, кажется, что он не может правильно или надежно управлять строками Unicode. Во-вторых, API немного устарел и специфичен и менее совместим с Python DB-API ( PEP-249).

Я нахожусь в процессе переноса кода проекта в PYMSSQL, который во время моего тестирования до сих пор покрывал основы обеих проблем, описанных выше. Мне не известно о каком-либо устаревании этого API, так как он, кажется, обновляется довольно часто (основная версия в октябре 2013 г.), документы более или менее актуальны и активны.

Это только мои текущие результаты и прогресс в PYODBC и PYMSSQL. Все может быть изменено, конечно:)

Другие вопросы по тегам