设置Django使用MySQL

我想稍微离开一下PHP并学习Python。 为了使用Python进行Web开发,我需要一个框架来帮助模板化和其他的事情。

我有一个非生产服务器,我用它来testing所有的Web开发的东西。 这是一个运行MariaDB而不是普通MySQL服务器软件包的Debian 7.1 LAMP栈。

昨天我安装了Django并创build了我的第一个项目叫firstweb 。 我还没有改变任何设置。

这是我的第一个大混乱。 在教程中,我跟随了安装Django的人,开始了他的第一个项目,重新启动了Apache,Django从此开始工作。 他去了他的浏览器,并没有任何问题去Django的默认页面。

我然而,我必须cd到我的firstweb文件夹并运行

python manage.py runserver myip:port 

它工作。 没问题。 但我想知道是否应该像这样工作,如果这会导致问题的线路?

我的第二个问题是,我想设置它,所以它使用我的MySQL数据库。 我进入我的settings.py下/ firstweb / firstweb,我看到引擎和名称,但我不知道该把什么放在这里。

然后在USER,PASSWORD和HOST区域,这是我的数据库和凭据? 如果我使用本地主机 ,我可以把本地主机放在主机区域?

MySQL支持很容易添加。 在你的DATABASES字典中,你将有一个这样的条目:

 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', } } 

从Django 1.7开始,您也可以select使用MySQL 选项文件 。 你可以通过设置你的DATABASES数组来达到这个目的:

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

您还需要使用上面类似的设置创build/path/to/my.cnf文件

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

在Django 1.7中使用这种新的连接方法,了解订单连接的build立非常重要:

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

换句话说,如果你在OPTIONS中设置数据库的名字,这将优先于NAME,它将覆盖MySQL选项文件中的所有内容。


如果您只是在本地机器上testing您的应用程序,则可以使用

 python manage.py runserver 

添加ip:port参数允许您自己以外的机器访问您的开发应用程序。 一旦准备好部署应用程序,我build议查看关于在djangobook上部署Django的章节

Mysql的默认字符集通常不是utf-8,所以一定要用这个sql来创build你的数据库:

 CREATE DATABASE mydatabase CHARACTER SET utf8 COLLATE utf8_bin 

如果您正在使用Oracle的MySQL连接器,则您的ENGINE行应如下所示:

 'ENGINE': 'mysql.connector.django', 

首先请运行下面的命令来安装python依赖项,否则python runserver命令会抛出错误。

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

然后configuration#Andy定义的settings.py文件,并在最后执行:

 python manage.py runserver 

玩的开心..!!

如上所述,您可以先从https://www.apachefriends.org/download.html轻松安装xampp,然后按照以下说明操作:;

  1. http://www.unixmen.com/install-xampp-stack-ubuntu-14-04/安装并运行xampp,然后从GUI启动Apache Web Server和MySQL数据库。
  2. 您可以根据需要configurationWeb服务器,但默认情况下,Web服务器位于http://localhost:80 ,数据库位于port 3306 ,而PhpMyadmin位于http://localhost/phpmyadmin/
  3. 从这里你可以看到你的数据库,并使用非常友好的GUI访问它们。
  4. 创build你想在你的Django项目上使用的任何数据库。
  5. 编辑你的settings.py文件,如:

     DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'DB_NAME', 'HOST': '127.0.0.1', 'PORT': '3306', 'USER': 'root', 'PASSWORD': '', }} 
  6. 在virtualenv中安装以下软件包(如果您在virtualenv上使用django,则更优选):

    sudo apt-get install libmysqlclient-dev

    pip安装MySQL-python

  7. 而已!! 你已经用一个非常简单的方法configuration了Django。

  8. 现在运行你的Django项目:

    python manage.py迁移

    python manage.py runserver

实际上,不同的环境有很多问题,python版本等等。 您可能还需要安装python开发文件,所以为了“强制”安装,我将运行所有这些:

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

你应该很好地接受公认的答案。 如果这对您很重要,可以删除不必要的软件包。

如果你正在使用python3.x然后运行下面的命令

 pip install mysqlclient 

然后改变setting.py

 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'DB', 'USER': 'username', 'PASSWORD': 'passwd', } } 

Andy的答案有帮助,但是如果你在你的django设置中暴露你的数据库密码,我build议按照mysql连接上的django官方configuration: https : //docs.djangoproject.com/en/1.7/ref/databases/

引用为:

 # 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 

在设置中replace“HOST”:“127.0.0.1”,只需将其添加到my.cnf:

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

另一个有用的选项是为django设置你的存储引擎,你可能想在你的setting.py中使用它:

 'OPTIONS': { 'init_command': 'SET storage_engine=INNODB', } 

运行这些命令

sudo apt-get install python-dev python3-dev

sudo apt-get install libmysqlclient-dev

pip安装MySQL-python

pip安装pymysql

pip安装mysqlclient

然后configurationsettings.py像

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

享受mysql连接

settings.py

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

}

然后:

 python manage.py migrate 

如果成功将生成这些表格:

 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 

你可以使用mysql。

这是一个展示示例,在Django 1.11.5版本上testing: Django-pool-showcase

您必须先创build一个MySQL数据库。 然后进入settings.py文件,用你的MySQL证书编辑'DATABASES'字典:

 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', } } 

这是一个完整的安装指南,用于设置Django在virtualenv上使用MySQL:

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