设置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,然后按照以下说明操作:;
- 从http://www.unixmen.com/install-xampp-stack-ubuntu-14-04/安装并运行xampp,然后从GUI启动Apache Web Server和MySQL数据库。
- 您可以根据需要configurationWeb服务器,但默认情况下,Web服务器位于
http://localhost:80
,数据库位于port 3306
,而PhpMyadmin位于http://localhost/phpmyadmin/
- 从这里你可以看到你的数据库,并使用非常友好的GUI访问它们。
- 创build你想在你的Django项目上使用的任何数据库。
-
编辑你的
settings.py
文件,如:DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'DB_NAME', 'HOST': '127.0.0.1', 'PORT': '3306', 'USER': 'root', 'PASSWORD': '', }}
-
在virtualenv中安装以下软件包(如果您在virtualenv上使用django,则更优选):
sudo apt-get install libmysqlclient-dev
pip安装MySQL-python
-
而已!! 你已经用一个非常简单的方法configuration了Django。
-
现在运行你的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/
- PHP 5.3.3中的ini_set(“memory_limit”)根本不起作用
- 如何通过configuration和库文件完全删除MySQL?
- 优化PDF文件(使用Ghostscript或其他)
- Linux软件包储存库中的* -dev软件包实际上包含什么?
- 为sslv3问题修补pyopenssl
- Google server putty connect'断开连接:没有支持的authentication方法可用(服务器发送:publickey)
- 如何在不安装的情况下从apt-get下载软件包?
- CUDA与我的gcc版本不兼容
- 如何信任一个apt库:Debian apt-get update error public key is not available:NO_PUBKEY <id>