libreria conectar con python sql-server

python - conectar - pymssql versus pyodbc versus adodbapi versus...



python sql server connection (2)

Soy relativamente nuevo en las bases de datos, realizo consultas de SQL, etc. En este momento estoy utilizando exclusivamente MS SQL Server para mis bases de datos (eso es lo que utilizamos en mi trabajo), pero espero que las respuestas a mi pregunta puedan ser más generales que eso. DB particular.

Hago una buena parte de mi trabajo con la aplicación de interfaz DB (en este caso, SQL Server Management Studio), pero también trabajo a través de scripts de Python, algunos de los cuales se ejecutan como trabajos cron, algunos de los cuales son sitios web tales que los usuarios pueden enviar consultas a la base de datos.

He estado usando el módulo pymssql para consultar y escribir en las bases de datos de python. Pero hay algunos problemas molestos que estoy encontrando. (Parece que pymssql no puede usar tablas temporales, y también he tenido problemas con "autocommit", pero es probable que sea mi culpa).

Así que siendo ignorante de gran parte de esto, me gustaría saber qué dirección debo tomar. Por lo que puedo decir, podría:

  • use pymssql, que habla directamente con los servidores MS SQL
  • use pyodbc, que requiere instalar FreeTDS y unixODBC primero, y configurarlos
  • use el módulo adodbapi, y no estoy seguro de qué requisitos se necesitan aquí.
  • ¿¿otro método??

La cosa es que no entiendo completamente lo que hace ODBC. Parece una especie de "intermediario de autenticación", algo así como un intermediario para garantizar que el usuario sea quien dice. Y tengo aún menos comprensión de ADO.

Si bien pymssql parece ser la forma más fácil de hacerlo, también parece ser la que la gente piensa menos, y que finalmente será desaprobada. Prefiero aprender de la manera "correcta" ya que estoy empezando con estas cosas.

Así que estoy buscando algunas opiniones bien informadas sobre la mejor manera de hacer que Python hable con MS SQL Server y con DB en general. Definiría "mejor" como lo mejor para alguien que hará cosas moderadamente complejas con él. (Mientras que apenas estoy empezando, es algo que eventualmente tendré que acelerar bastante).

¡Gracias! Micro


Desde mi experiencia, PYODBC es un poco problemático en estos días. En primer lugar, no parece administrar las cadenas Unicode de forma adecuada o confiable. En segundo lugar, la API está un poco desactualizada y es menos compatible con Python DB-API ( PEP-249 ).

Estoy en medio de la migración del código del proyecto a PYMSSQL que, durante mi prueba hasta ahora, cubre las bases de los dos problemas anteriores. No estoy al tanto de ninguna desaprobación con esta API, ya que parece que se actualiza con cierta frecuencia (versión principal en octubre de 2013), los documentos están más o menos actualizados y están activos.

Estos son solo mis hallazgos actuales y el progreso con PYODBC y PYMSSQL. Todo sujeto a cambio de curso :)


pyodbc (recomendado)

Comencé a usar este módulo hace unos meses y no tengo quejas hasta ahora. La comunidad de desarrollo parece más activa que pymssql. No tuve problemas de instalación hasta ahora (32bit Win XP y 64bit Server 2008 R2). Tendrá la ventaja adicional de no estar limitado a los servidores MS SQL.

Puede encontrar: http://www.lfd.uci.edu/~gohlke/pythonlibs/ útil si está instalando en Windows.

pymssql

He trabajado con la versión 1.x durante aproximadamente 2,5 años. Tuve algunos problemas menores con las limitaciones de tamaño para objetos grandes. También me encontré con problemas masivos al realizar subprocesos múltiples (hasta el punto que tuve que apagar si estaba apagado). 1.x se basó en bibliotecas de MS obsoletas. Sin embargo, la versión reciente es 2.x y ya no usa estas bibliotecas en desuso. En su lugar, utiliza FreeTDS (como pyodbc). Suena bien, pero no lo he probado todavía.

Adodbapi

He intentado cambiar pymssql y reemplazarlo con adodbapi hace aproximadamente un año y algunas de las consultas que funcionaron bien con pymssql fallaron sin ninguna razón obvia. Rápidamente abandoné adodbapi de nuevo.