Mise en place de Django pour utiliser MySQL

je veux m'éloigner un peu de PHP et apprendre le Python. Afin de faire du développement web avec Python, j'aurai besoin d'un framework pour aider avec les Templiers et d'autres choses.

j'ai un serveur non-production que j'utilise pour tester tous les trucs de développement web. C'est une pile de lampes Debian 7.1 qui exécute MariaDB au lieu du paquet MySQL-server commun.

hier, J'ai installé Django et créé mon premier projet appelé firsweb . Je n'ai pas changé les paramètres encore.

Voici mon premier gros morceau de confusion. Dans le tutoriel, j'ai suivi le type qui a installé Django, démarré son premier projet, redémarré Apache, et Django vient de travailler à partir de là. Il est allé sur son navigateur et est allé sur la page par défaut de Django sans problème.

Moi, cependant, j'ai un cd dans mon firstweb dossier et exécutez

python manage.py runserver myip:port

et ça marche. Pas de problème. Mais je suis je me demande si ça doit marcher comme ça, et si ça va causer des problèmes en bout de ligne?

Mon seconde question est que je veux le configurer de sorte qu'il utilise ma base de données MySQL. Je vais dans mon settings.py sous / firsweb / firsweb et je vois moteur et nom mais je ne suis pas sûr de ce qu'il faut mettre ici.

et puis dans les zones utilisateur, mot de passe, et hôte est-ce ma base de données et ses justificatifs d'identité? Si j'utilise localhost puis-je mettre localhost dans la zone hôte?

134
demandé sur FeedTheWeb 2013-10-05 00:03:20

10 réponses

MySQL est simple à ajouter. Dans votre dictionnaire DATABASES , vous aurez une entrée comme ceci:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql', 
        'NAME': 'DB_NAME',
        'USER': 'DB_USER',
        'PASSWORD': 'DB_PASSWORD',
        'HOST': 'localhost',   # Or an IP Address that your DB is hosted on
        'PORT': '3306',
    }
}

vous avez également l'option D'utiliser MySQL option files , à partir de Django 1.7. Vous pouvez accomplir ceci en paramétrant votre tableau DATABASES comme suit:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'OPTIONS': {
            'read_default_file': '/path/to/my.cnf',
        },
    }
}

vous devez également créer le fichier /path/to/my.cnf avec des paramètres similaires à partir d'en haut

[client]
database = DB_NAME
host = localhost
user = DB_USER
password = DB_PASSWORD
default-character-set = utf8

avec cette nouvelle méthode de connexion à Django 1.7, il est important de savoir que les connexions d'ordre sont établies:

1. OPTIONS.
2. NAME, USER, PASSWORD, HOST, PORT
3. MySQL option files.

en d'autres termes, si vous définissez le nom de la base de données EN OPTIONS, cela aura priorité sur le nom, qui remplacerait n'importe quoi dans un fichier D'option MySQL.


si vous ne faites que tester votre application sur votre machine locale, vous pouvez utiliser

python manage.py runserver

L'ajout de l'argument ip:port permet à des machines autres que la vôtre d'accéder à votre application de développement. Une fois que vous êtes prêt à déployer votre application, je vous recommande de jeter un oeil au chapitre sur déployant Django sur le djangobook

Mysql jeu de caractères par défaut n'est souvent pas utf-8, donc assurez-vous de créer votre base de données en utilisant ce sql:

CREATE DATABASE mydatabase CHARACTER SET utf8 COLLATE utf8_bin

si vous utilisez connecteur MySQL D'Oracle votre ligne ENGINE devrait ressembler à ceci:

'ENGINE': 'mysql.connector.django',
232
répondu Andy 2017-01-21 13:51:36

à la toute première s'il vous plaît, exécutez les commandes ci-dessous pour installer les dépendances python sinon la commande Python runserver va jeter l'erreur.

sudo apt-get install libmysqlclient-dev
sudo pip install MySQL-python

puis configurer le settings.py fichier défini par # Andy et à la dernière exécution:

python manage.py runserver

amusez-vous bien..!!

21
répondu Ritesh 2014-08-29 13:56:22

comme tout est dit ci-dessus, vous pouvez facilement installer xampp en premier de https://www.apachefriends.org/download.html Puis suivez les instructions comme:

  1. installer et exécuter xampp à partir de http://www.unixmen.com/install-xampp-stack-ubuntu-14-04 / , puis démarrer le serveur web Apache et la base de données MySQL à partir de L'interface graphique.
  2. , Vous pouvez configurer votre serveur web, comme vous voulez, mais par défaut, le serveur web est à http://localhost:80 et base de données à port 3306 , et PhpMyadmin à http://localhost/phpmyadmin/
  3. D'ici, vous pouvez voir vos bases de données et y accéder en utilisant une interface graphique très conviviale.
  4. créez n'importe quelle base de données que vous voulez utiliser sur votre projet Django.
  5. modifier votre settings.py fichier comme:

    DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'DB_NAME',
        'HOST': '127.0.0.1',
        'PORT': '3306',
        'USER': 'root',
        'PASSWORD': '',
    }}
    
  6. installez les paquets suivants dans le virtualenv (si vous utilisez django sur virtualenv, qui est plus préféré):

    sudo apt-get install libmysqlclient-dev

    pip install MySQL-python

  7. C'est ça!! vous avez configuré Django avec MySQL d'une manière très simple.

  8. exécutez maintenant votre projet Django:

    python manage.py migrate

    python manage.py runserver

13
répondu root 2015-08-30 19:38:08

si vous utilisez python3.x puis exécuter la commande

pip install mysqlclient

puis changer setting.py comme

DATABASES = {
'default': {
    'ENGINE': 'django.db.backends.mysql',
    'NAME': 'DB',
     'USER': 'username',
    'PASSWORD': 'passwd',
  }
  }
9
répondu Manoj Jadhav 2016-10-06 11:56:10

en fait, il y a beaucoup de problèmes avec différents environnements, versions de python, etc. Vous pourriez aussi avoir besoin d'installer des fichiers dev de python, alors pour 'forcer' l'installation, je lancerais tout ceci:

sudo apt-get install python-dev python3-dev
sudo apt-get install libmysqlclient-dev
pip install MySQL-python
pip install pymysql
pip install mysqlclient

Vous devriez être bon d'aller avec la accepté de répondre. Et peut supprimer les paquets inutiles si c'est important pour vous.

8
répondu mimoralea 2014-12-04 19:50:50

la réponse D'Andy aide, mais si vous avez des inquiétudes sur l'exposition de votre mot de passe de base de données dans votre paramètre django, je vous suggère de suivre la configuration officielle de django sur la connexion mysql: https://docs.djangoproject.com/en/1.7/ref/databases /

Cité ici:

# settings.py
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'OPTIONS': {
            'read_default_file': '/path/to/my.cnf',
        },
    }
}


# my.cnf
[client]
database = NAME
user = USER
password = PASSWORD
default-character-set = utf8

pour remplacer 'HOST': '127.0.0.1' dans la configuration, il suffit de l'ajouter dans my.cnf:

# my.cnf
[client]
database = NAME
host = HOST NAME or IP
user = USER
password = PASSWORD
default-character-set = utf8

une autre OPTION qui est utile, est pour configurer votre moteur de stockage pour django, vous pourriez le vouloir dans votre setting.py:

'OPTIONS': {
   'init_command': 'SET storage_engine=INNODB',
}
3
répondu Jiawei Dai 2015-03-29 04:13:55

exécutez ces commandes

sudo apt-get install python-dev python3-dev

sudo apt-get install libmysqlclient-dev

pip install MySQL-python

pip install pymysql

pip install mysqlclient

puis configurer settings.py comme

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'django_db',
        'HOST': '127.0.0.1',
        'PORT': '3306',
        'USER': 'root',
        'PASSWORD': '123456',
    }
}

Profiter de mysql connexion

3
répondu Deepak Kumar 2017-01-21 13:30:56

settings.py

DATABASES = {
'default': {
    'ENGINE': 'django.db.backends.mysql',
    'NAME': 'django',
    'USER': 'root',
    'PASSWORD': '*****',
    'HOST': '***.***.***.***',
    'PORT': '3306',
    'OPTIONS': {
        'autocommit': True,
    },
}

}

puis:

python manage.py migrate

si le succès générera ces tableaux:

auth_group
auth_group_permissions
auth_permission
auth_user
auth_user_groups
auth_user_user_permissions
django_admin_log
django_content_type
django_migrations
django_session

et u will peut utiliser mysql.

c'est un exemple de vitrine, test sur Django version 1.11.5: Django-piscine-vitrine

2
répondu LuciferJack 2017-09-22 09:54:15

vous devez d'abord créer une base de données MySQL. Puis allez dans le fichier settings.py et éditez le dictionnaire 'DATABASES' avec vos identifiants MySQL:

DATABASES = {
 'default': {
 'ENGINE': 'django.db.backends.mysql',
 'NAME': 'YOUR_DATABASE_NAME',
 'USER': 'YOUR_MYSQL_USER',
 'PASSWORD': 'YOUR_MYSQL_PASS',
 'HOST': 'localhost',   # Or an IP that your DB is hosted on
 'PORT': '3306',
 }
}

voici un guide d'installation complet pour configurer Django pour utiliser MySQL sur un virtualenv:

http://codex.themedelta.com/how-to-install-django-with-mysql-in-a-virtualenv-on-linux /

0
répondu Sibi M 2016-11-22 11:53:20

suivre les étapes indiquées afin de le configurer pour utiliser la base de données MySQL:

1) Install MySQL Database Connector :

    sudo apt-get install libmysqlclient-dev

2) Install the mysqlclient library :

    pip install mysqlclient

3) Install MySQL server, with the following command :

    sudo apt-get install mysql-server

4) Create the Database :

    i) Verify that the MySQL service is running:

        systemctl status mysql.service

    ii) Log in with your MySQL credentials using the following command where -u is the flag for declaring your username and -p is the flag that tells MySQL that this user requires a password :  

        mysql -u db_user -p


    iii) CREATE DATABASE db_name;

    iv) Exit MySQL server, press CTRL + D.

5) Add the MySQL Database Connection to your Application:

    i) Navigate to the settings.py file and replace the current DATABASES lines with the following:

        # Database
        # https://docs.djangoproject.com/en/2.0/ref/settings/#databases

        DATABASES = {
            'default': {
                'ENGINE': 'django.db.backends.mysql',
                'OPTIONS': {
                    'read_default_file': '/etc/mysql/my.cnf',
                },
            }
        }
        ...

    ii) Next, let’s edit the config file so that it has your MySQL credentials. Use vi as sudo to edit the file and add the following information:

        sudo vi /etc/mysql/my.cnf

        database = db_name
        user = db_user
        password = db_password
        default-character-set = utf8

6) Once the file has been edited, we need to restart MySQL for the changes to take effect :

    systemctl daemon-reload

    systemctl restart mysql

7) Test MySQL Connection to Application:

    python manage.py runserver your-server-ip:8000
0
répondu Shubham Gupta 2018-06-05 15:55:12