问题:设置Django以使用MySQL
我想稍微远离PHP,学习Python。为了使用Python进行Web开发,我需要一个框架来帮助模板和其他事情。
我有一台非生产服务器,用于测试所有Web开发内容。这是一个运行MariaDB而不是常见的MySQL服务器软件包的Debian 7.1 LAMP堆栈。
昨天我安装了Django并创建了我的第一个项目firstweb。我尚未更改任何设置。
这是我的第一个大困惑。在教程中,我跟随那个家伙安装了Django,开始了他的第一个项目,重新启动了Apache,从那时起Django就开始工作了。他转到浏览器,然后毫无问题地转到Django默认页面。
但是我,我必须进入我的firstweb文件夹并运行
python manage.py runserver myip:port
而且有效。没问题。但是我想知道它是否应该像这样工作,并且这是否会引起问题?
我的第二个问题是我想对其进行设置,以便它使用我的MySQL数据库。我进入/ firstweb / firstweb下的settings.py,看到了ENGINE和NAME,但不确定在这里放什么。
然后在USER,PASSWORD和HOST区域中,这是我的数据库及其凭据吗?如果我使用本地主机,是否可以将本地主机放在HOST区域中?
回答 0
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开始,您还可以选择使用MySQL 选项文件。您可以这样设置DATABASES
数组来完成此操作:
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. OPTIONS.
2. NAME, USER, PASSWORD, HOST, PORT
3. MySQL option files.
换句话说,如果在OPTIONS中设置数据库的名称,它将优先于NAME,而NAME将覆盖MySQL选项文件中的所有内容。
如果您只是在本地计算机上测试应用程序,则可以使用
python manage.py runserver
添加ip:port
参数允许您自己的机器以外的其他机器访问您的开发应用程序。准备好部署应用程序后,建议您阅读djangobook上有关部署Django的章节
MySQL默认字符集通常不是utf-8,因此请确保使用以下sql创建数据库:
CREATE DATABASE mydatabase CHARACTER SET utf8 COLLATE utf8_bin
如果您正在使用Oracle的MySQL的连接器的ENGINE
线应该是这样的:
'ENGINE': 'mysql.connector.django',
请注意,您首先需要在操作系统上安装mysql。
brew install mysql (MacOS)
此外,mysql客户端软件包已针对python 3进行了更改(MySQL-Client
仅适用于python 2)
pip3 install mysqlclient
回答 1
首先,请运行以下命令以安装python依赖项,否则python runserver命令将引发错误。
sudo apt-get install libmysqlclient-dev
sudo pip install MySQL-python
然后配置#Andy定义的settings.py文件,并在最后一次执行:
python manage.py runserver
玩得开心..!!
回答 2
如果您使用的是python3.x,则运行以下命令
pip install mysqlclient
然后像这样更改setting.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'DB',
'USER': 'username',
'PASSWORD': 'passwd',
}
}
回答 3
如上所述,您可以轻松地首先从https://www.apachefriends.org/download.html安装xampp, 然后按照以下说明进行操作:
- 从http://www.unixmen.com/install-xampp-stack-ubuntu-14-04/安装并运行xampp ,然后从GUI启动Apache Web Server和MySQL数据库。
- 您可以根据需要配置Web服务器,但默认情况下Web服务器位于
http://localhost:80
,数据库位于port 3306
,而PhpMyadmin位于http://localhost/phpmyadmin/
- 从这里您可以看到您的数据库,并使用非常友好的GUI访问它们。
- 创建要在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安装libmysqlclient-dev
pip安装MySQL-python
而已!!您已经以非常简单的方式为MySQL配置了Django。
现在运行您的Django项目:
python manage.py迁移
python manage.py运行服务器
回答 4
实际上,不同的环境,python版本等等存在很多问题。您可能还需要安装python dev文件,因此要“强行安装”,我将运行所有这些文件:
sudo apt-get install python-dev python3-dev
sudo apt-get install libmysqlclient-dev
pip install MySQL-python
pip install pymysql
pip install mysqlclient
您应该接受公认的答案。如果对您很重要,可以删除不需要的软件包。
回答 5
运行这些命令
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连接
回答 6
安迪的答案很有帮助,但是如果您担心要在django设置中公开数据库密码,我建议在mysql连接上遵循django官方配置: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
要在设置中替换“ 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',
}
回答 7
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版上进行测试: Django-pool-showcase
回答 8
- 安装
mysqlclient
sudo pip3 install mysqlclient
如果出现错误:
命令“ python setup.py egg_info”在/ tmp / pip-install-dbljg4tx / mysqlclient /中失败,错误代码为1
然后:
1. sudo apt install libmysqlclient-dev python-mysqldb
2. sudo pip3 install mysqlclient
修改settings.py
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',"}, } }
回答 9
请按照给定的步骤进行设置以使用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
回答 10
您必须首先创建一个MySQL数据库。然后转到settings.py
文件并'DATABASES'
使用您的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',
}
}
这是用于将Django设置为在virtualenv上使用MySQL的完整安装指南:
http://codex.themedelta.com/how-to-install-django-with-mysql-in-a-virtualenv-on-linux/