Je bosse actuellement sur un petit programme en Python… Il doit aller rechercher des infos dans les tables MySQL de ce blog. J’utilise le module MySQLdb pour Python2.6. Ça fonctionne très bien sur ma base MySQL de developpement @localhost mais pas sur la base de production située sur un serveur distant.
Message d’erreur :
Traceback (most recent call last): File "/home/jpec/python2/WordPress.py", line 56, in <module> Blog.Connecter() File "/home/jpec/python2/WordPress.py", line 39, in Connecter db = self.DB ) File "/usr/lib/python2.6/site-packages/MySQLdb/__init__.py", line 81, in Connect return Connection(*args, **kwargs) File "/usr/lib/python2.6/site-packages/MySQLdb/connections.py", line 188, in __init__ super(Connection, self).__init__(*args, **kwargs2) OperationalError: (2005, "Unknown MySQL server host 'dbxxxxx.1and1.fr' (1)"
A première vue, il semblerait que le module n’arrive pas à résoudre le nom de domaine. J’ai donc commencé à farfouiller et je me suis rendu compte que c’était tout simplement 1and1.fr qui bloque l’accès aux bases depuis l’extérieur. Le seul moyen d’accéder aux bases et de passer par l’interface d’administration PHPMyAdmin préinstallée…
Les bases de données MySQL sont stockées sur un serveur dédié aux bases de données. Ce dernier est protégé par un pare-feu pour assurer la sécurité de vos données. Vous ne pouvez accéder à ce serveur de bases de données et à votre base de données qu’à partir de votre site Web. Vous ne pouvez pas vous connecter directement à une base de données MySQL à partir de votre PC (connexion ODBC externe).
Pas GLOP
Traceback (most recent call last):
File “/home/jpec/python2/WordPress.py”, line 56, in <module>
Blog.Connecter()
File “/home/jpec/python2/WordPress.py”, line 39, in Connecter
db = self.DB )
File “/usr/lib/python2.6/site-packages/MySQLdb/__init__.py”, line 81, in Connect
return Connection(*args, **kwargs)
File “/usr/lib/python2.6/site-packages/MySQLdb/connections.py”, line 188, in __init__
super(Connection, self).__init__(*args, **kwargs2)
OperationalError: (2005, “Unknown MySQL server host ‘db1613.1and1.fr’ (1)”)
Rien ne vaut l’auto-hébergement
Tout à fait… je risque de bientôt pouvoir hoster mes bases à la maison car je déménage et je passe chez Free. Avec l’IP fixe c’est plus pratique
Par contre je laisserai la partie php/html/images sur le serveur 1and1 pour pas surcharger ma connection à la maison.
C’est un peu bête de ne pas hoster toi-même les pages PHP/HTML : ça pèse très peu en bande passante, et c’est quand même sympa de garder le contrôle là-dessus.
Par contre, évidemment je hoste les images en externe (OVH), là par contre c’est sûr que tant que la fibre n’est pas démocratisée, c’est problématique.
(mais les trucs comme le logo du site, les smileys, sont hébergés chez moi, c’est plus pratique et ça reste très léger)
Si tu veux un ordre d’idée, pour mon blog sur une journée à 100 visites, je suis à ~5Mo de bande passante consommée au total, c’est très raisonnable.
Avec juste les images en externe, c’est quasiment comme si tu hostais complètement ton site chez toi, et sur ta ligne il y a très peu de conséquences.
Tu as quelle longueur de ligne ADSL/affaiblissement ?
Tu peux toujours faire un espèce de webservice en PHP qui reçoit la requete et te relais le resultat en XML/Json ou autre. Après en python tu passes par la urllib et on en parle plus.
Je viens de déménager… première nuit dans mon nouvel appart ce soir! Je viens de faire une demande chez Free (marre d’Orange qui en plus d’un prix fort te refait payer une installation de ligne lors d’un déménagement).
Je ne connais donc pas encore les performances exactes de ma ligne…
En effet le principe d’hoster mes pages php/html me tente… à voir une fois que j’aurai reçu ma FreeBox et ma ligne sera activée
Certains serveurs publics, comme free.fr (et probablement aussi 1and1.fr) refusent les connexions ne venant pas de leurs propres serveurs => d’où l’obligation de passer par une interface phpMyAdmin qui va taper sur un serveur de chez-eux….
Bonjour,
Je suis arrivé completement au hasard sur ce site, mais si ca peut aider…
Oui, la plupart des hébergeurs empechent les connexions à leurs bases depuis d’autres réseaux que les leurs.
Mais Ubitux propose une solution de contournement tout à fait viable (mais avec baisse des perfos) : un intermédiaire PHP.
Ca s’appelle aussi du HTTP Tunneling, et tu trouvera une implémentation fournie avec SQL Manager Lite.
Il s’agit d’un fichier nommé emsproxy.php, inclus dans l’installation, qui crée un pont entre ta base de donnée et ton outil externe.
J’espère que celà t’aidera.
Bon courage dans tes recherches
@+
Alexis
Salut,
Je suis totalement novice en programmation (j’en avais jamais fait), mais j’ai commencé il y a 2 semaines pour un projet artistique et je dois avoir finit tout ça d’ici un mois.
Mes camarade plus expérimentés ont choisi python comme principal langage pour le script principal, et on doit communiquer avec une base de donnée MySQL, et là je commence à avoir un problème.
Je n’arrive pas à me connecter via la Python 2.6 même en “localhost” en tant qu’user “root” et je mets “” comme passwd (pas de passwd quoi)
Est-ce que tu pourrais me dire qu’elle version de MySQLdb tu utilise (j’ai récupéré et laborieusement installé la 1.2.3c1), voire est-ce que tu pourrais m’envoyer le bout de script python avec lequel tu arrives à te connecter à MySQL ???
Plus clairement voilà mon soucis:
>>> import MySQLdb
>>> MySQLdb.connect(db=”test”,passwd=”",host=”localhost”)
Traceback (most recent call last):
File “”, line 1, in
MySQLdb.connect(db=”test”,passwd=”",host=”localhost”)
File “build/bdist.macosx-10.3-fat/egg/MySQLdb/__init__.py”, line 81, in Connect
return Connection(*args, **kwargs)
File “build/bdist.macosx-10.3-fat/egg/MySQLdb/connections.py”, line 188, in __init__
super(Connection, self).__init__(*args, **kwargs2)
OperationalError: (2002, “Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’ (2)”)
(sinon j’ai trouvé un forumeur qui suggère de passer par la odbc (via la libraire mxodbc), mais celle-ci est sous licence payante et on n’a pas du tout de budget pour ça, on est déjà hyper serré pour le reste).
Merci infiniment,
Yohan
EDIT : J’ai supprimé ton addresse email du commentaire pour pas que tu sois spammé
Salut,
Ma version MySQLdb est la 1.2.3b2 sous Linux. Je vois que tu es sous MacOSX mais normalement il ne doit pas y avoir de soucis.
Quel est ton moteur de base de donnée? Est il démarré et correctement configuré? A première vue ton erreur c’est que python n’arrive pas à trouver ton serveur de base de donnée :
> OperationalError: (2002, “Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’ (2)”)
Sinon pour avoir de l’aide sur un module Python => pydoc -g => c’est ton meilleur ami!
Mon moteur de base de donnée c’est MAMP que j’utilisais au début pour du PHP, et oui il est allumé.
Ma librairie MySQLdb je l’ai laborieusement installée dans MAMP/Library (c’est ce que j’ai trouvé via un autre forum, même si j’étais étonné de ne pas l’installer dans Python2.6/site-packages.
Cela dit si tu peux m’affirmer que cela peut fonctionner en local sous python2.6 j’essaierai de m’en sortir (ce sera sous linux au final pour l’installation donc peut-être m’y mettre dès maintenant même si je ne connais pas du tout), ce qui m’effrayais c’était de lire ça et là que cette librairie ne fonctionnais que sous python2.5.
Sur Linux chez moi ça fonctionne sans problème. Je serai toi, j’installerai un environnement de développement identique à celui qui sera utilisé en production. Si tu ne connais pas Linux choisis Debian car elle est très utilisée et simple a administrer. Tu trouvera des tutoriels en veux tu en voilà sur le net. Ensuite installe mysql et le module python et tu seras tranquille.
Bon courage