Ce que je peux observer:
32 bits pyodbc pour 32bit python (3.6) fonctionne avec pilote 64 bits odbc de Microsoft. Pourquoi?
- J'utilise Windows 7 64bit Mon code (établir une connexion odbc avec un serveur SQL sur le réseau, les opérations de lecture simple seulement) est écrit en Python 3.6. 2 32bit
- Je pip installé pyodbc, donc je suppose que c'était aussi 32 bits.
- J'ai téléchargé et installé le "Microsoft® ODBC Driver 13.1 pour SQL Server®" sur le site Web de Microsoft.
- Mon code python se connecte à d'autres ordinateurs sur le réseau, qui exécutent server2003 32 bits et SQL Server 2005 (32 bits) ou sql2008 (32 bits).
La configuration fonctionne. De plus: le test ci-dessus montre que la configuration ci-dessus peut se connecter à un ordinateur avec Microsoft server2008 (64bit) exécutant sql2012 (64bit) avec la configuration sous "Connexion réseau SQL Server (32bit)" vide (meaing, la DLL 32 bits est manquante), tandis que la configuration par défaut de la connexion réseau 64 bits contient les options de configuration habituelles telles que l'adresse IP et les informations sur le port d'écoute.
Ma propre explication:
[1] le client et OS du serveur et les interfaces ODBC peuvent être de toute combinaison 32/64 bits, mais le protocole qui se déplace à travers le réseau entre mon ordinateur et l'ordinateur SQL être identique.
[2] Python 32 bits + pyodbc peut parler au pilote ODBC 64 bits de Microsoft, car ... 32 bits Python sait comment utiliser une DLL 64 bits ...?
* "Je crois que, une fois qu'une demande est mise sur le réseau par le client au serveur, 32 bits ou 64 bits n'a plus d'importance." * - C'est correct. –
@GordThompson Merci, Est-ce parce que, la spécification ODBC verrouille le protocole pour échanger des informations entre les pilotes. Alors que nous n'avons pas de problèmes comme les confusions de pointeurs 32bit/64bit, ou des problèmes comme un int peut être 32 ou 64bit. Un pilote ODBC 64 bits sur un serveur peut comprendre le langage ODBC parlé par un client ODBC 32 bits. C'est presque comme un objet COM, une spécification de fer plaqué, indépendamment des bits. – eliu