Partage
  • Partager sur Facebook
  • Partager sur Twitter

Django + python 3 + MySQL, possible ?

    18 mai 2015 à 16:09:01

    Salut à tous !

    Je démarre actuellement un projet Django avec Python 3, tout va bien, Django m'affiche bien la page par défaut ... Mais ! (oui parcequ'il y a toujours un 'Mais' :D), je ne parviens pas à trouver les drivers MySQL pour Python compatibles à la fois avec Django 1.8 et Python 3. Hé oui, Django utilise MySQLdb, qui n'est bien évidement pas compatible avec Python 3, il me semble ...

    Avez-vous un solution ?

    CDT.

    • Partager sur Facebook
    • Partager sur Twitter
    Un de ces quatre, viens faire un tour sur Zeste de Savoir !
      18 mai 2015 à 18:12:12

      Salut,

      http://saltnlight5.blogspot.fr/2014/09/django-with-python-3-and-mysql-database.html

      Enjoy! :D

      • Partager sur Facebook
      • Partager sur Twitter
        18 mai 2015 à 19:13:48

        Merci, mais ça ne fonctionne pas non plus. Ça me met que mysql-connector-python n'est pas compatible avec python 3.2 ...

        Bref, pas grave j'ai trouvé une solution en attendent.

        Là voici pour ceux qui auraient le même problème (les $variables sont à remplacer)  :

        • installer MySQL, python3, python3-dev, virtualenv, pip
          # MySQL
          debconf-set-selections <<< "mysql-server-5.5 mysql-server/root_password password $MYSQL_PASSWORD"
          debconf-set-selections <<< "mysql-server-5.5 mysql-server/root_password_again password $MYSQL_PASSWORD"
          apt-get -y install mysql-server
          apt-get -y install mysql-client
          apt-get -y install libmysqlclient-dev
          
          # Python
          apt-get -y install python python$PYTHON_VERSION python$PYTHON_VERSION-dev python-pip
          
          pip install virtualenv
          pip install virtualenvwrapper
        • Activer le virtualenv (j'utilise virtualenvwrapper), et modifier le .bashrc pour qu'il se lance par défaut
          echo '' >> $HOME_DIR.bashrc
          echo '# CUSTOM' >> $HOME_DIR.bashrc
          echo "export WORKON_HOME=$PROJECTS_DIR/virtualenvs" >> $HOME_DIR.bashrc
          echo 'mkdir -p $WORKON_HOME' >> $HOME_DIR.bashrc
          echo "export PROJECT_HOME=$PROJECT_DIR" >> $HOME_DIR.bashrc
          echo "source /usr/local/bin/virtualenvwrapper.sh" >> $HOME_DIR.bashrc
          echo "workon $VIRTUALENV_NAME" >> $HOME_DIR.bashrc
          echo "echo 'virtualenv acivated'" >> $HOME_DIR.bashrc
          echo 'cd $PROJECT_HOME' >> $HOME_DIR.bashrc
          
          export WORKON_HOME=$PROJECTS_DIR/virtualenvs
          mkdir -p $WORKON_HOME
          export PROJECT_HOME="$PROJECT_DIR"
          source /usr/local/bin/virtualenvwrapper.sh
        • créer un virtualenv
          mkvirtualenv --python=/usr/bin/python3 $VIRTUALENV_NAME
        • dans le virtualenv installer MySQLdb compatible avec Python3
          pip install git+git://github.com/davispuh/MySQL-for-Python-3
        • Et voilà c'est fait ;), on peut maintenant installer Django et tout le reste

        Pour info, la version officiel de MySQLdb n'est pas compatible avec Python3 car elle utilise une dépendance nommée ConfigParser qui à été renommée en configparser dans Python3 pour mieux correspondre aux exigences de la PEP8.

        -
        Edité par LeSuricateFurtif 19 mai 2015 à 18:36:04

        • Partager sur Facebook
        • Partager sur Twitter
        Un de ces quatre, viens faire un tour sur Zeste de Savoir !
          20 mai 2015 à 10:00:37

          Bon, à priori cette solution pose aussi des problèmes :colere2: 

          Voici une autre solution qui à l'aire de mieux fonctionner :

          • Installer pymysql
            pip install pymysql
          • Remplacer toutes les occurrences de 'MySQLdb' par 'pymysql' dans 'django/db/backends/mysql/base.py' et 'django/db/backends/mysql/introspection.py'

          J’espère que ça fonctionne correctement ce coup ci ...

          • Partager sur Facebook
          • Partager sur Twitter
          Un de ces quatre, viens faire un tour sur Zeste de Savoir !

          Django + python 3 + MySQL, possible ?

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown