SQL Server, Python et OS X
Ce qui est un bon moyen de l'interface Python fonctionnant sur OS X avec un nuage base de données SQL Server?
EDIT:
Avec pyodbc j'obtiens cette erreur:
>>> import pyodbc
>>> cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER=adsf.com;DATABASE=asdf;UID=asdf;PWD=asdf')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
pyodbc.Error: ('00000', '[00000] [iODBC][Driver Manager]dlopen({SQL Server}, 6): image not found (0) (SQLDriverConnect)')
source d'informationauteur Ben Hamner | 2012-07-26
Vous devez vous connecter pour publier un commentaire.
SQLAlchemy est probablement votre meilleur pari. Il a un ORM, mais n'a pas besoin de son utilisation. MS SQL est pris en charge par un certain nombre de DBAPI projets.
Que la diminution des interfaces de niveau, voici les trois DBAPI projets énumérés à SQLAlchemy du site qui a de la vanille Python et support Unix:
Résumé
Je suis sur un Mac sous Yosemite Version 10.10.1 essayez de vous connecter à un Serveur MS SQL server base de données. J'ai cherché et ne trouve pas de mise à jour détaillée de réponse, voici un article qui est la plupart du temps à partir de cet incroyable article ici. Je suis ajoutant sur stackoverflow dans le cas où le lien meurt. L'idée est que nous aurons les couches suivantes de configuration/connexion.
Couches
Étapes
Installer Homebrew de ici - c'est un gestionnaire de paquets pour Mac OSX. L'article montre comment utiliser un autre gestionnaire de paquets 'MacPorts'. Pour mes instructions, ils sont avec homebrew. Fondamentalement homebrew a un dossier "cave", qui maintient les différentes versions des paquets. Au lieu de modifier vos fichiers normaux, au lieu de ces homebrew paquets.
Nous avons besoin d'installer Pyodbc, mais pyodbc utilise iODBC pilotes par défaut (qui est installé avec mac), mais beaucoup de gens ont des problèmes pour le faire fonctionner. Donc, nous allons utiliser une alternative appelée
unixodbc
qui nous installer dans le futur. Pour l'instant, nous avons besoin de configurer le pyodbc montage tel qu'il fonctionne avec unixodbc.Aller à PyPi et télécharger pyodbc archive et décompressez-le. Puis modifiez ces lignes dans
setup.py
::
et maintenant exécuter
python setup.py install
.Cette rend notre pyodbc l'installation, l'utilisation de pilotes unixodbc par défaut. Parfait!
Installer FreeTDS avec
brew install freetds --with-unixodbc
(FreeTDS est le pilote qui se trouve entre le Mac ODBC MS SQL Server, cette graphique montre ici la version de TDS que vous devez utiliser en fonction de vos serveurs Microsoft version"; par exemple le protocole tds 7.2 pour Microsoft SQL Server 2008).Configurer
freetds.conf
fichier (Le fichier doit être dans le fichier '/usr/local/etc/freetds.conf', qui pour les Homebrew est un lien à-dire "/usr/local/Cave/freetds/0.91_2/etc", mais le vôtre peut être différent selon la version). J'ai édité le mondial et ajouté ma base de données info à la fin (pour une raison de "tds version = 7.2" serait jeter une erreur, mais encore du travail, tout en 8.0 fonctionne, tout simplement):Vérifier FreeTDS installé correctement avec:
tsql -S myserver -U myuser -P mypassword
(vous devriez voir une invite comme cela si cela a fonctionné)Installer unixODBC avec
brew install unixodbc
.Installation de votre unixODBC fichiers de configurationqui comprend odbcinst.ini (configuration du pilote), et odbc.ini (DSN fichier de configuration). Par défaut, mes fichiers sont:
/Library/ODBC
(Note: NON ma bibliothèque utilisateur aka /Utilisateurs/williamliu/Bibliothèque). Ou ils pourraient aussi être dans votre répertoire d'installation de l'homebrew/usr/local/Cellar/unixodbc/<version>/etc
.Ouvrir votre " odbcinst.ini de fichier', puis ajoutez le code suivant (Note: Différentes si vous utiliser MacPorts. Pour les Homebrew, ce fichier est un lien vers la version homebrew par exemple, le mien est dans '/usr/local/Cave/freetds/0.91_2/lib/libtdsodbc.si"):
Ouvrir votre " odbc.ini " et puis ajoutez le code suivant (c'est généralement le long avec
odbcinst.ini
:Vérifier unixODBC installé correctement avec:
isql MYSERVER MYUSER MYPASSWORD
. Si vous obtenez une erreur que vous ne pouvez pas vous connecter, puis ajouter-v
pour vérifier que la sortie verbeuse est et de le corriger. Sinon, vous devriez voir ceci:Maintenant vérifier pyodbc œuvres avec un programme en python. Exécuter python dans le shell ou un .py fichier avec cela et vous devriez obtenir votre requête dos:
Vous pouvez vous référer à la la documentation de pyodbc pour obtenir plus d'aide.
J'ai été en mesure de le simplifier et à plusieurs reprises de le faire travailler dans mes environnements de Mai 2016:
Installer FreeTDS
Installer PYODBC
Extrapolée à partir de la Référence
Dire UnixODBC sur le FreeTDS Pilote
Remarque: Vous pouvez avoir une version différente
À partir de là, j'ai dû dire pyodbc d'utiliser le
FreeTDS
Pilote:C'est fantastique que vous pouvez maintenant l'utiliser avec
aioodbc
si vous faites de la programmation asynchrone en Python 3.x:Sinon: Vous pouvez utiliser
pymssql
à plat, mais qui ne fonctionnent pas si vous souhaitez utiliser odbc ou asyncio.Sera la réponse de a été vraiment utile pour moi.
Voici quelques notes sur quelques différences que j'ai expérimenté le long de la voie, dans le cas où ils aident les autres:
La pyodbc archive déjà eu le changement qui s'impose, donc, tout ce que j'avais à faire était de le télécharger et de l'exécuter
python setup.py install
. (Note: La version que j'avais installé avecpip
était encore à l'aide de iodbc, donc ça n'a pas de travail.La
Verify FreeTDS installed
étape ne me permet pas de se connecter à la base de données car je n'ai pas accès à lamaster
et il n'y a apparemment aucun moyen de spécifier. Cela semble être une question bien connue. J'ai perdu un tas de temps à essayer de le résoudre, mais il a échoué et à la fin il n'a pas bloquer les autres étapes de travail.Ces instructions pour mettre le nom d'utilisateur et mot de passe dans
odbc.ini
. Depuis que nous avons besoin de dire que les identifiants de connexion à nouveau lorsque nous nous connectons, j'ai essayé de supprimer le nom d'utilisateur et le Mot de passe deodbc.ini
en espérant qu'ils n'étaient pas vraiment nécessaires. (Je préfère avoir mon mot de passe de moins en moins de places!) Cela a bien fonctionné.J'ai dû ajouter de l'hôte avec le nom d'utilisateur dans
isql MYSERVER [email protected] MYPASSWORD
(et dans le code Python).(J'espère que cela signifierait que je n'ai pas besoin de l'armée dans la freetds.conf, mais hélas, qui doit rester.)
Je suis sur macOS Sierra 10.12.3. pymssql fait le travail parfaitement. Si rien ne fonctionne à partir d'autres upvoted réponses, suivez ce:
et voici un extrait d'exemple pour établir la connexion:
Il y a beaucoup d'étapes à franchir. Sera la réponse présente un bon nombre d'entre eux.
Après une lutte beaucoup, j'ai réussi à le faire fonctionner avec le Panneau (ce devrait travailler n'importe où que les pistes de docker).
J'ai testé l'installation avec Python 3.6 et Python 2.7: avec pyodbc==3.0.10, django-pyodbc-d'azur et Django 1.10.4 (cette configuration est pour Django, mais travaille pour la vanille python).
J'ai créé une image de marque que vous pouvez utiliser: https://hub.docker.com/r/toast38coza/python-mssql/
Ici est un simple travail le panneau de configuration:
Maintenant, vous pouvez exécuter:
Qui va exécuter le python de la cli à l'intérieur de la
py
service au-dessus dePuis essayez de créer une base de données:
Qui devrait créer une base de données appelée
mydb
(leDB_NAME
à partir du menu fixe-composition de fichier variable d'environnement). Remarque: étant donné que nous avons créé le lien vers ledb
service (en cours d'exécution MS SQL), on peut utiliser le nom d'hôtedb
. Si vous vous connectez à une source externe de MS SQL d'installation, manifestement, vous n'avez pas besoin de ladb
service (et de modifier la chaîne de connexion en conséquence)Si vous êtes à l'aide de Django, il est un exemple plus complet dans le repomais, juste un heads-up, vous aurez besoin de votre
settings
à ressembler à quelque chose comme ceci:Pyodbc + MS propre fournisseur odbc, msodbcsqlplutôt que de FreeTDS. Mon raisonnement était simple: qui est le plus motivé pour avoir un bon support de SQL Server? MME
https://docs.microsoft.com/en-us/azure/sql-database/sql-database-connect-query-python
C'était vraiment assez simple, le principal tracas, c'est que leur programme d'installation ne fonctionne qu'avec Homebrewplutôt que de macports qui est ce que j'utilise habituellement. J'ai d'abord essayé d'installer Homebrew à mon répertoire home, mais les pilotes ne sont pas "vu" par pyodbc de cette façon, de sorte que fait un standard Homebrew installer, puis
brew install msodbcsql
. Il en est résulté dans les paquets suivants:Chaîne de connexion qui a fonctionné pour moi:
Et, pour SQL Alchimie:
Si vous êtes également l'installation de MS SQL Server (j'ai eu l'2016 Developer Edition), n'oubliez pas de : 1) l'utilisation Gestionnaire de Configuration SQL Server (
SQLServerManager13.msc
) pour activer TCP /ip sur le port 1433, par votre adresse IP. 2) ouvrir le port 1433 dans le Pare-feu Windows (wf.msc
). MS config instructionsVersions: la Sierra, Python 2.7, SQL Server 2016 Dev edition, Gagner 10 Pro.