Je veux m'éloigner un peu de PHP et apprendre Python. Afin de faire du développement Web avec Python, il me faut un cadre pour aider à la modélisation et à d'autres choses.
J'ai un serveur non productif que j'utilise pour tester tous les éléments de développement Web. C'est une pile Debian 7.1 LAMP qui exécute MariaDB à la place du paquet MySQL-server commun.
Hier, j'ai installé Django et créé mon premier projet appelé firstweb . Je n'ai pas encore modifié de paramètres.
Voici mon premier gros morceau de confusion. Dans le tutoriel, j'ai suivi le gars qui avait installé Django, lancé son premier projet, redémarré Apache et Django fonctionnait désormais à partir de maintenant. Il est allé sur son navigateur et est allé à la page par défaut Django sans aucun problème.
Cependant, je dois aller dans mon dossier firstweb et lancer
python manage.py runserver myip:port
Et il fonctionne. Aucun problème. Mais je me demande si cela est supposé fonctionner de la sorte, et si cela va causer des problèmes à terme.
Ma deuxième question est que je veux le configurer afin qu'il utilise ma base de données MySQL. Je vais dans le fichier settings.py sous/firstweb/firstweb et je vois ENGINE et NAME mais je ne suis pas sûr de ce qu'il faut mettre ici.
Et puis, dans les zones USER, PASSWORD et Host, s'agit-il de ma base de données et de ses informations d'identification? Si j'utilise localhost , puis-je simplement mettre localhost dans la zone de l'hôte ?
support de MySQL est simple à ajouter. Dans votre dictionnaire DATABASES
, vous aurez une entrée comme celle-ci:
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 la possibilité d’utiliser MySQL fichiers d’option , à partir de Django 1.7. Vous pouvez y parvenir en définissant 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 les mêmes paramètres que ci-dessus.
[client]
database = DB_NAME
Host = localhost
user = DB_USER
password = DB_PASSWORD
default-character-set = utf8
Avec cette nouvelle méthode de connexion dans Django 1.7, il est important de savoir que l'ordre des connexions est établi:
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 dans OPTIONS, cela aura la priorité sur NAME, ce qui remplacerait tout ce qui se trouve dans un fichier d'options MySQL.
Si vous testez simplement votre application sur votre ordinateur local, vous pouvez utiliser
python manage.py runserver
L'ajout de l'argument ip:port
permet à d'autres machines 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 coup d'oeil au chapitre sur Déployer Django sur le djangobook
Le jeu de caractères par défaut de Mysql n’est souvent pas utf-8, assurez-vous donc 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',
Notez que vous devrez d’abord installer mysql sur votre système d’exploitation.
brew install mysql (MacOS)
De plus, le paquet du client mysql a changé pour python 3 (MySQL-Client
ne fonctionne que pour python 2)
pip3 install mysqlclient
Pour la première fois, exécutez les commandes ci-dessous pour installer python dépendances, sinon la commande python runserver déclenchera une erreur.
Sudo apt-get install libmysqlclient-dev
Sudo pip install MySQL-python
Configurez ensuite le fichier settings.py comme défini par #Andy et à la dernière exécution:
python manage.py runserver
S'amuser..!!
Si vous utilisez python3.x, exécutez la commande ci-dessous
pip install mysqlclient
Puis changez setting.py comme
DATABASES = {
'default': {
'ENGINE': 'Django.db.backends.mysql',
'NAME': 'DB',
'USER': 'username',
'PASSWORD': 'passwd',
}
}
Comme tout ce qui a été dit ci-dessus, vous pouvez facilement installer xampp en premier à partir de https://www.apachefriends.org/download.html puis suivez les instructions:
http://localhost:80
et la base de données à port 3306
, et PhpMyadmin à http://localhost/phpmyadmin/
.Editez votre fichier settings.py
comme suit:
DATABASES = {
'default': {
'ENGINE': 'Django.db.backends.mysql',
'NAME': 'DB_NAME',
'Host': '127.0.0.1',
'PORT': '3306',
'USER': 'root',
'PASSWORD': '',
}}
Installez les packages suivants dans virtualenv (si vous utilisez Django sur virtualenv, ce qui est préférable):
Sudo apt-get installez libmysqlclient-dev
pip installer MySQL-python
C'est ça!! vous avez configuré Django avec MySQL très facilement.
Maintenant, lancez votre projet Django:
python manage.py migrer
serveur python manage.py
En fait, il existe de nombreux problèmes avec différents environnements, python versions, etc. Vous devrez peut-être également installer les fichiers python dev, afin de "forcer" l'installation, je lancerais tous les logiciels suivants:
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 capable d'aller avec la réponse acceptée. Et pouvez supprimer les paquets inutiles si cela est important pour vous.
Exécuter ces commandes
Sudo apt-get installez python-dev python3-dev
Sudo apt-get installez libmysqlclient-dev
pip installer MySQL-python
pip installer pymysql
pip installer mysqlclient
puis configurez settings.py comme
DATABASES = {
'default': {
'ENGINE': 'Django.db.backends.mysql',
'NAME': 'Django_db',
'Host': '127.0.0.1',
'PORT': '3306',
'USER': 'root',
'PASSWORD': '123456',
}
}
Profitez de la connexion mysql
La réponse de Andy est utile, mais si vous souhaitez exposer votre mot de passe de base de données dans votre paramètre Django, je suggère de suivre Django la configuration officielle de la connexion mysql: https: // docs .djangoproject.com/fr/1.7/ref/databases /
Cité ici comme:
# 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 les paramètres, ajoutez-le simplement dans my.cnf:
# my.cnf
[client]
database = NAME
Host = Host NAME or IP
user = USER
password = PASSWORD
default-character-set = utf8
Une autre option utile est de définir votre moteur de stockage pour Django, vous pouvez le vouloir dans votre fichier setting.py:
'OPTIONS': {
'init_command': 'SET storage_engine=INNODB',
}
settings.py
DATABASES = {
'default': {
'ENGINE': 'Django.db.backends.mysql',
'NAME': 'Django',
'USER': 'root',
'PASSWORD': '*****',
'Host': '***.***.***.***',
'PORT': '3306',
'OPTIONS': {
'autocommit': True,
},
}
}
ensuite:
python manage.py migrate
si le succès va générer ces tables:
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 vous pouvez utiliser mysql.
ceci est un exemple de démonstration, test sur Django version 1.11.5: Django-pool-showcase
Suivez 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
Vous devez d'abord créer une base de données MySQL. Ensuite, allez dans le fichier settings.py
et éditez le dictionnaire 'DATABASES'
avec vos informations d'identification 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 la configuration de Django afin d'utiliser MySQL sur un serveur virtuel:
http://codex.themedelta.com/how-to-install-Django-with-mysql-in-a-virtualenv-on-linux/