Python 设置Django以使用MySQL
我想稍微远离PHP,学习Python。为了使用Python进行web开发,我需要一个框架来帮助模板和其他事情 我有一个非生产服务器,我用它来测试所有的web开发内容。它是一个Debian7.1LAMP堆栈,运行MariaDB而不是常见的MySQL服务器包 昨天我安装了Django并创建了我的第一个项目firstweb。我还没有更改任何设置 这是我的第一个大困惑。在本教程中,我跟踪了安装Django的人,开始了他的第一个项目,重新启动了Apache,Django从此开始工作。他打开浏览器,进入Django默认页面,没有任何问题 但是,我必须将cd刻录到我的第一个Web文件夹中并运行Python 设置Django以使用MySQL,python,mysql,django,debian,Python,Mysql,Django,Debian,我想稍微远离PHP,学习Python。为了使用Python进行web开发,我需要一个框架来帮助模板和其他事情 我有一个非生产服务器,我用它来测试所有的web开发内容。它是一个Debian7.1LAMP堆栈,运行MariaDB而不是常见的MySQL服务器包 昨天我安装了Django并创建了我的第一个项目firstweb。我还没有更改任何设置 这是我的第一个大困惑。在本教程中,我跟踪了安装Django的人,开始了他的第一个项目,重新启动了Apache,Django从此开始工作。他打开浏览器,进入Dj
python manage.py runserver myip:port
它是有效的。没问题。但我想知道它是否应该像这样工作,这是否会导致后续问题
我的第二个问题是,我想设置它,以便它使用我的MySQL数据库。我进入/firstweb/firstweb下的我的settings.py,我看到了引擎和名称,但我不确定要在这里放什么
然后在用户、密码和主机区域,这是我的数据库及其凭据吗?如果我使用的是localhost,我可以将localhost放在主机区域吗?添加起来很简单。在数据库
词典中,您将有如下条目:
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',
}
}
'ENGINE': 'mysql.connector.django',
从Django 1.7开始,您还可以选择使用MySQL。您可以通过如下方式设置数据库
数组来实现这一点:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'OPTIONS': {
'read_default_file': '/path/to/my.cnf',
},
}
}
您还需要使用上面的类似设置创建/path/to/my.cnf
文件
[client]
database = DB_NAME
host = localhost
user = DB_USER
password = DB_PASSWORD
default-character-set = utf8
使用Django 1.7中的这种新连接方法,重要的是要知道建立的顺序连接:
1。选项。
2.名称、用户、密码、主机、端口
3.MySQL选项文件。
换句话说,如果您在OPTIONS中设置数据库的名称,它将优先于name,后者将覆盖MySQL选项文件中的任何内容
如果您只是在本地计算机上测试应用程序,那么可以使用
python manage.py runserver
添加ip:port
参数允许您自己以外的计算机访问您的开发应用程序。一旦准备好部署应用程序,我建议您先看一下
Mysql默认字符集通常不是utf-8,因此请确保使用以下sql创建数据库:
CREATE DATABASE mydatabase CHARACTER SET utf8 COLLATE utf8_bin
如果您正在使用引擎
行,则应如下所示:
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',
}
}
'ENGINE': 'mysql.connector.django',
请注意,首先需要在操作系统上安装mysql
brew install mysql (MacOS)
另外,Python3的mysql客户端包也发生了更改(mysql客户端
仅适用于Python2)
首先,请运行以下命令来安装python依赖项,否则python runserver命令将抛出错误
sudo apt-get install libmysqlclient-dev
sudo pip install MySQL-python
然后按照#Andy的定义配置settings.py文件,最后执行:
python manage.py runserver
玩得开心 如上所述,您可以从 然后按照以下说明进行操作:
http://localhost:80
和数据库位于端口3306,PhpMyadmin位于端口3306http://localhost/phpmyadmin/设置.py
文件,如下所示:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'DB_NAME',
'HOST': '127.0.0.1',
'PORT': '3306',
'USER': 'root',
'PASSWORD': '',
}}
实际上,不同的环境、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
你应该很乐意接受这个公认的答案。如果这对您很重要,可以删除不必要的软件包。Andy的回答很有帮助,但如果您担心在django设置中暴露数据库密码,我建议您在mysql连接上遵循django官方配置: 此处引述如下:
# 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
要替换设置中的“主机”:“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',
}
您必须首先创建一个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:
运行这些命令
sudo apt-get install python-dev python3-dev
sudo apt-get install libmysqlclient-dev
pip install MySQL-python
pip install pymysql
pip install mysqlclient
然后像配置settings.py一样配置
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'django_db',
'HOST': '127.0.0.1',
'PORT': '3306',
'USER': 'root',
'PASSWORD': '123456',
}
}
享受mysql连接如果您使用的是python3.x,请运行下面的命令
pip install mysqlclient
然后像这样更改setting.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'DB',
'USER': 'username',
'PASSWORD': 'passwd',
}
}
设置.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'django',
'USER': 'root',
'PASSWORD': '*****',
'HOST': '***.***.***.***',
'PORT': '3306',
'OPTIONS': {
'autocommit': True,
},
}
}
然后:
如果成功,将生成这些表:
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版上测试:
按照给定的步骤将其设置为使用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
sudo pip3安装mysqlclient
如果出现错误:
命令“python setup.py egg_info”失败,错误代码为1
/tmp/pip-install-dbljg4tx/mysqlclient/
然后:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'website',
'USER': 'root',
'PASSWORD': '',
'HOST': '127.0.0.1',
'PORT': '3306',
'OPTION': {'init_command':"SET sql_mode='STRICT_TRANS_TABLE',"},
}
}
这些命令有助于在django中无错误地设置mysql db注意:截至2016年1月1日,python 3.5.x没有mysql驱动程序。看到了吧,就用光了
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'website',
'USER': 'root',
'PASSWORD': '',
'HOST': '127.0.0.1',
'PORT': '3306',
'OPTION': {'init_command':"SET sql_mode='STRICT_TRANS_TABLE',"},
}
}
python3 -m pip install mysql-connector
pip install mysqlclient