Я относительно новичок в отношении баз данных, выполняя 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