interfaceerror - python connect to sql server
pyodbc y python 3.4 en Windows (3)
pyodbc es algo muy bueno, pero los instaladores de Windows solo funcionan con su versión muy específica de python. Con el lanzamiento de Python 3.4, los únicos instaladores disponibles simplemente se detienen una vez que no ven 3.3 en el registro (aunque 3.4 ciertamente está ahí).
Copiar los archivos .pyd y .egg-info de una instalación 3.3 en el directorio 3.4 paquetes de sitios no parece hacer el truco. Al importar pyodbc, se genera un error de importación: error de importación: ImportError: DLL load failed: %1 is not a valid Win32 application.
¿Hay una salsa secreta que se pueda agregar para que el archivo 3.3 funcione correctamente? ¿O simplemente tenemos que esperar una versión del instalador 3.4?
¿Intentaste descargar desde here ? Tiene una estructura no oficial para 3.4. Yo mismo hice una prueba rápida, parece que está funcionando bien para mí.
Las diferentes versiones de Python (en su mayor parte) no son compatibles con binarios y, por lo tanto, cualquier extensión compilada (como pyodbc) solo funcionará para una versión específica.
Tenga en cuenta que los paquetes de Pure-Python (los que están completamente escritos en Python y no tienen dependencias que no sean de Python) no necesitan compilarse, y por lo tanto pueden escribirse para admitir varias versiones de Python.
También tenga en cuenta que es técnicamente posible que una extensión compilada se escriba de modo que funcione para Python 3.2, así como para 3.3, 3.4 y el futuro 3.x, pero deben limitarse al "ABI estable" como especificado por PEP 384 , y la mayoría de las extensiones no hacen esto. Por lo que sé, pyodbc no se limita al ABI estable y debe compilarse por separado para cada versión de Python.
Dicho esto, también es posible compilar su propia versión de pyodbc desde la fuente, siempre que tenga las herramientas y la experiencia necesarias. (Pero supongo que si estás haciendo esta pregunta, no lo haces. Yo tampoco, de lo contrario, incluiría algunos consejos en esta respuesta).
Como ya ha comentado, pypyodbc puede ser su mejor apuesta, ya que es un paquete de Python puro.
La instalación de pypyodbc se puede hacer a través de la línea de comandos:
C:/Python34/Scripts>pip install pypyodbc
Usándolo como reemplazo directo de pyodbc se puede hacer usando:
import pypyodbc as pyodbc
[La versión actual de pyodbc
en el momento de esta edición es 3.0.10 , y es compatible con Python 3.4. Por supuesto, aún es útil estar al tanto de pypyodbc
en caso de que pyodbc
se pyodbc
nuevamente cuando se pyodbc
futuras versiones de Python.]
pyodbc 3.0.10
esto instalando pyodbc 3.0.10
. La última versión de pyodbc no funcionó en Windows con Python 3.4
Sin embargo, pyodbc 3.0.10 funcionó para mí
Instale el comando en el símbolo del sistema: pip install pyodbc 3.0.10