{"id":246,"date":"2011-02-09T21:12:14","date_gmt":"2011-02-09T20:12:14","guid":{"rendered":"http:\/\/www.alkannoide.com\/?p=246"},"modified":"2011-02-28T11:48:28","modified_gmt":"2011-02-28T10:48:28","slug":"python-mysql-via-mamp-sous-mac-os-x","status":"publish","type":"post","link":"https:\/\/www.alkannoide.com\/2011\/02\/09\/python-mysql-via-mamp-sous-mac-os-x\/","title":{"rendered":"Python – MySQL (via MAMP sous Mac OS X)"},"content":{"rendered":"

Je suis actuellement \u00e0 la d\u00e9couverte de Python<\/a>. A cet effet, je regardais la m\u00e9thode pour me connecter \u00e0 une base de donn\u00e9es MySQL. J’ai pass\u00e9 pas mal de temps \u00e0 configurer mon environnement, j’en profite donc pour vous faire profiter de mes remarques pour l’installation et la configuration du module permettant l’int\u00e9raction BDD <-> langage.\u00a0Je travaille sous Mac OS X (Snow Leopard) avec MAMP et voici les diff\u00e9rentes \u00e9tapes permettant de se connecter \u00e0 une base de donn\u00e9e MySQL depuis Python.<\/p>\n

Etape 1 : install\u00e9 MySQL depuis les sources<\/h2>\n

R\u00e9cup\u00e8re la version suivante de MySQL : MySQL Server 5.1.55<\/a><\/p>\n

D\u00e9compresser le fichier depuis le dossier o\u00f9 se trouve le fichier :<\/p>\n

tar xzvf mysql-5.1.55.tar.gz<\/em><\/p>\n

cd mysql-5.1.37<\/em><\/p>\n

.\/configure –prefix=\/usr\/local\/mysql –with-extra-charsets=complex –enable-thread-safe-client –enable-local-infile –enable-shared\u00a0–with-plugins=innobase<\/em><\/p>\n

make<\/em> (cette \u00e9tape prends quelques minutes, on est tout de m\u00eame en train de compiler MySQL)<\/p>\n

sudo make install<\/em><\/p>\n

On s’arr\u00eate maintenant l\u00e0 pour la partie Server de MySQL.<\/p>\n

Etape 2 : install\u00e9 le module Python MySQLdb<\/h2>\n

On commence tout d’abord par d\u00e9finir dans l’environnement o\u00f9 se trouve les commandes MySQL via cette command<\/p>\n

export PATH=$PATH:\/usr\/local\/mysql\/bin\/<\/em><\/p>\n

V\u00e9rifier ensuite que vous avez install\u00e9 setuptools<\/em>, le cas \u00e9ch\u00e9ant, vous pouvez t\u00e9l\u00e9charger sur le site<\/a>.<\/p>\n

Il faut ensuite t\u00e9l\u00e9charger et d\u00e9compresser le fichier suivant : MySQLdb<\/a><\/p>\n

Effectuer ensuite les commandes suivantes :<\/p>\n

sudo python setup.py clean<\/em><\/p>\n

sudo python setup.py build<\/em><\/p>\n

sudo python setup.py install<\/em><\/p>\n

Testez ensuite le module est bien install\u00e9. Pour cela, faites les commandes suivantes:<\/p>\n

cd<\/em> (il est conseill\u00e9 d’\u00eatre dans un autre dossier que celui o\u00f9 se trouve le module MySQLdb)<\/p>\n

python<\/em><\/p>\n

>>> import MySQLdb<\/em><\/p>\n

Si aucune erreur ne s’affiche, c’est que le module est bien disponible.<\/p>\n

Etape 3 : connexion depuis un script Python<\/h2>\n

Tout est pr\u00eat maintenant, je vais tenter de me connecter via le script de base (via la documentation<\/a>)<\/p>\n

import MySQLdb<\/em><\/p>\n

conn = MySQLdb.connect(host = “localhost”, user = “root”,passwd = “root”,db = “mysql”)<\/em><\/p>\n

cursor = conn.cursor()<\/em><\/p>\n

cursor.execute (“DESCRIBE user”)<\/em><\/p>\n

rows = cursor.fetchall()<\/em><\/p>\n

for row in rows:<\/em><\/p>\n

print row<\/em><\/p>\n

cursor.close ()<\/em><\/p>\n

conn.close ()<\/em><\/p>\n

Cependant une exception se l\u00e8ve<\/p>\n

_mysql_exceptions.OperationalError: (2002, “Can’t connect to local MySQL server through socket ‘\/tmp\/mysql.sock’ (2)”)<\/em><\/p>\n

En effet, vous n’utilisez pas le mysql compil\u00e9 pr\u00e9c\u00e9demment mais celui de MAMP, il faut donc rajouter un param\u00e8tre suppl\u00e9mentaire :<\/p>\n

conn = MySQLdb.connect(host = “localhost”, user = “root”,passwd = “root”,db = “mysql”, unix_socket=”\/Applications\/MAMP\/tmp\/mysql\/mysql.sock”)<\/em><\/p>\n

Relancez votre script et le tour est jou\u00e9, vous \u00eates connect\u00e9 \u00e0 votre base de donn\u00e9e MySQL MAMP.<\/p>\n

Source : <\/span><\/p>\n

Installing MySQL on Snow Leopard<\/a><\/p>\n

Installing Python MySQLdb 1.2.2 on Mac OS X<\/a><\/p>\n

Writing MySQL Scripts with Python DB-API<\/a><\/p>\n

Documentation officielle<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"

Je suis actuellement \u00e0 la d\u00e9couverte de Python. A cet effet, je regardais la m\u00e9thode pour me connecter \u00e0 une base de donn\u00e9es MySQL. J’ai pass\u00e9 pas mal de temps \u00e0 configurer mon environnement, j’en profite donc pour vous faire profiter de mes remarques pour l’installation et la configuration du module permettant l’int\u00e9raction BDD <-> […]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[40],"tags":[],"_links":{"self":[{"href":"https:\/\/www.alkannoide.com\/wp-json\/wp\/v2\/posts\/246"}],"collection":[{"href":"https:\/\/www.alkannoide.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.alkannoide.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.alkannoide.com\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.alkannoide.com\/wp-json\/wp\/v2\/comments?post=246"}],"version-history":[{"count":13,"href":"https:\/\/www.alkannoide.com\/wp-json\/wp\/v2\/posts\/246\/revisions"}],"predecessor-version":[{"id":258,"href":"https:\/\/www.alkannoide.com\/wp-json\/wp\/v2\/posts\/246\/revisions\/258"}],"wp:attachment":[{"href":"https:\/\/www.alkannoide.com\/wp-json\/wp\/v2\/media?parent=246"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.alkannoide.com\/wp-json\/wp\/v2\/categories?post=246"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.alkannoide.com\/wp-json\/wp\/v2\/tags?post=246"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}