Подтвердить что ты не робот

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

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

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

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

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

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

Вещь, я не FULLY получаю то, что делает ODBC. Кажется, это своего рода "посредник по аутентификации", похожий на среднего человека, чтобы гарантировать, что пользователь - это тот, кто он/она говорит. И я еще меньше понимаю ADO.

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

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

Спасибо! Mike

4b9b3361

Ответ 1

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

Я начал использовать этот модуль несколько месяцев назад и до сих пор не имею жалоб. Сообщество разработчиков кажется более активным, чем pymssql. У меня пока не было проблем с установкой (32-битная версия Win XP и 64-битный сервер 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, не удалось без видимой причины. Я быстро бросил адодбапи снова.

Ответ 2

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

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

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