python - insertar - Configurando Django para usar MySQL
mysql-connector-python (9)
Quiero alejarme un poco de PHP y aprender Python. Para hacer un desarrollo web con Python necesitaré un marco para ayudar con la creación de plantillas y otras cosas.
Tengo un servidor que no es de producción y que uso para probar todo el desarrollo web. Es una pila Debian 7.1 LAMP que ejecuta MariaDB en lugar del paquete común del servidor MySQL.
Ayer instalé Django y creé mi primer proyecto llamado firstweb . No he cambiado ninguna configuración todavía.
Aquí está mi primera gran confusión. En el tutorial seguí al tipo que instaló Django, comenzó su primer proyecto, reinició Apache y Django solo trabajó desde entonces. Fue a su navegador y fue a la página predeterminada de Django sin problemas.
Sin embargo, tengo que hacer un cd en mi carpeta firstweb y ejecutar
python manage.py runserver myip:port
Y funciona. No hay problema. Pero me pregunto si se supone que debe funcionar así, y si esto causará problemas en el futuro.
Mi segunda pregunta es que quiero configurarlo para que use mi base de datos MySQL. Voy a mi settings.py en / firstweb / firstweb y veo ENGINE y NAME, pero no estoy seguro de qué poner aquí.
Y luego en las áreas USUARIO, CONTRASEÑA y HOST, ¿esta es mi base de datos y sus credenciales? Si estoy usando localhost, ¿puedo poner localhost en el área HOST?
Como se dijo anteriormente, puede instalar xampp primero desde https://www.apachefriends.org/download.html Luego siga las instrucciones como:
- Instale y ejecute xampp desde http://www.unixmen.com/install-xampp-stack-ubuntu-14-04/ , luego inicie Apache Web Server y MySQL Database desde la GUI.
- Puede configurar su servidor web como lo desee, pero de forma predeterminada el servidor web se encuentra en
http://localhost:80
y la base de datos en elport 3306
, y PhpMyadmin enhttp://localhost/phpmyadmin/
- Desde aquí puede ver sus bases de datos y acceder a ellas utilizando una GUI muy amigable.
- Crea cualquier base de datos que quieras usar en tu proyecto Django.
Edite su archivo
settings.py
como:DATABASES = { ''default'': { ''ENGINE'': ''django.db.backends.mysql'', ''NAME'': ''DB_NAME'', ''HOST'': ''127.0.0.1'', ''PORT'': ''3306'', ''USER'': ''root'', ''PASSWORD'': '''', }}
Instale los siguientes paquetes en el virtualenv (si está usando django en virtualenv, que es más preferido):
sudo apt-get install libmysqlclient-dev
pip instala MySQL-python
¡¡Eso es!! usted ha configurado Django con MySQL de una manera muy fácil.
Ahora ejecuta tu proyecto Django:
python manage.py migrate
python manage.py runserver
En realidad, hay muchos problemas con diferentes entornos, versiones de Python, etc. Es posible que también necesites instalar los archivos de desarrollo de Python, por lo que para ''aplicar fuerza bruta'' a la instalación ejecutaría todos estos:
sudo apt-get install python-dev python3-dev
sudo apt-get install libmysqlclient-dev
pip install MySQL-python
pip install pymysql
pip install mysqlclient
Deberías ser bueno para ir con la respuesta aceptada. Y puede eliminar los paquetes innecesarios si eso es importante para usted.
La respuesta de Andy ayuda, pero si le preocupa exponer la contraseña de su base de datos en su configuración django, le sugiero que siga la configuración oficial de django en la conexión de mysql: https://docs.djangoproject.com/en/1.7/ref/databases/
Citado aquí como:
# 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
Para reemplazar ''HOST'': ''127.0.0.1'' en la configuración, simplemente agrégalo en my.cnf:
# my.cnf
[client]
database = NAME
host = HOST NAME or IP
user = USER
password = PASSWORD
default-character-set = utf8
Otra OPCIÓN que es útil, es configurar su motor de almacenamiento para django, es posible que desee en su setting.py:
''OPTIONS'': {
''init_command'': ''SET storage_engine=INNODB'',
}
Para el primero, ejecute los siguientes comandos para instalar las dependencias de Python; de lo contrario, el comando python runserver emitirá un error.
sudo apt-get install libmysqlclient-dev
sudo pip install MySQL-python
A continuación, configure el archivo settings.py como se define por #Andy y en la última ejecución:
python manage.py runserver
Que te diviertas..!!
Primero debe crear una base de datos MySQL. A continuación, vaya al archivo settings.py
y edite el diccionario ''DATABASES''
con sus credenciales de 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'',
}
}
Aquí hay una guía de instalación completa para configurar Django para usar MySQL en un virtualenv:
http://codex.themedelta.com/how-to-install-django-with-mysql-in-a-virtualenv-on-linux/
Si está utilizando python3.x, ejecute el comando debajo de
pip install mysqlclient
Luego cambie setting.py como
DATABASES = {
''default'': {
''ENGINE'': ''django.db.backends.mysql'',
''NAME'': ''DB'',
''USER'': ''username'',
''PASSWORD'': ''passwd'',
}
}
settings.py
DATABASES = {
''default'': {
''ENGINE'': ''django.db.backends.mysql'',
''NAME'': ''django'',
''USER'': ''root'',
''PASSWORD'': ''*****'',
''HOST'': ''***.***.***.***'',
''PORT'': ''3306'',
''OPTIONS'': {
''autocommit'': True,
},
}
}
entonces:
python manage.py migrate
si el éxito generará estas tablas:
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
y usted puede usar mysql.
este es un ejemplo de presentación, prueba en Django versión 1.11.5: Django-pool-showcase
El soporte de MySQL es simple de agregar. En su diccionario de DATABASES
, tendrá una entrada como esta:
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'',
}
}
También tiene la opción de utilizar archivos de opciones de MySQL, a partir de Django 1.7. Puede lograr esto configurando su matriz DATABASES
manera:
DATABASES = {
''default'': {
''ENGINE'': ''django.db.backends.mysql'',
''OPTIONS'': {
''read_default_file'': ''/path/to/my.cnf'',
},
}
}
También necesita crear el archivo /path/to/my.cnf
con configuraciones similares desde arriba
[client]
database = DB_NAME
host = localhost
user = DB_USER
password = DB_PASSWORD
default-character-set = utf8
Con este nuevo método de conexión en Django 1.7, es importante saber las conexiones de pedido establecidas:
1. OPTIONS.
2. NAME, USER, PASSWORD, HOST, PORT
3. MySQL option files.
En otras palabras, si configura el nombre de la base de datos en OPCIONES, tendrá prioridad sobre NAME, lo que anularía cualquier cosa en un archivo de opción de MySQL.
Si solo está probando su aplicación en su máquina local, puede usar
python manage.py runserver
Al agregar el argumento ip:port
máquinas que no sean las suyas pueden acceder a su aplicación de desarrollo. Una vez que esté listo para implementar su aplicación, le recomiendo echar un vistazo al capítulo sobre Implementación de Django en el djangobook
El conjunto de caracteres predeterminado de Mysql a menudo no es utf-8, por lo tanto, asegúrese de crear su base de datos usando este sql:
CREATE DATABASE mydatabase CHARACTER SET utf8 COLLATE utf8_bin
Si está utilizando el conector MySQL de Oracle, su línea ENGINE
debería verse así:
''ENGINE'': ''mysql.connector.django'',
Ejecuta estos comandos
sudo apt-get install python-dev python3-dev
sudo apt-get install libmysqlclient-dev
pip instala MySQL-python
pip install pymysql
pip install mysqlclient
A continuación, configure settings.py como
DATABASES = {
''default'': {
''ENGINE'': ''django.db.backends.mysql'',
''NAME'': ''django_db'',
''HOST'': ''127.0.0.1'',
''PORT'': ''3306'',
''USER'': ''root'',
''PASSWORD'': ''123456'',
}
}
Disfruta la conexión mysql