将Django设置为使用MySQL

gre*_*gor 159 python mysql django debian

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

我有一个非生产服务器,用于测试所有Web开发的东西.它是Debian 7.1 LAMP堆栈,它运行MariaDB而不是常见的MySQL服务器包.

昨天我安装了Django并创建了我的第一个名为firstweb的项目.我还没有改变任何设置.

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

但是,我必须进入我的firstweb文件夹并运行

python manage.py runserver myip:port
Run Code Online (Sandbox Code Playgroud)

它有效.没问题.但是我想知道它是否应该像这样工作,如果这会引起问题呢?

我的第二个问题是我想要设置它以便它使用我的MySQL数据库.我进入/ firstweb/firstweb下的settings.py,我看到ENGINE和NAME,但我不确定要放在这里.

然后在USER,PASSWORD和HOST区域是我的数据库及其凭据?如果我使用localhost,我可以将localhost放在HOST区域吗?

And*_*ndy 294

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',
    }
}
Run Code Online (Sandbox Code Playgroud)

从Django 1.7开始,您还可以选择使用MySQL 选项文件.您可以通过设置DATABASES数组来完成此操作:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'OPTIONS': {
            'read_default_file': '/path/to/my.cnf',
        },
    }
}
Run Code Online (Sandbox Code Playgroud)

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

[client]
database = DB_NAME
host = localhost
user = DB_USER
password = DB_PASSWORD
default-character-set = utf8
Run Code Online (Sandbox Code Playgroud)

使用这种在Django 1.7中连接的新方法,了解订单连接是很重要的:

1. OPTIONS.
2. NAME, USER, PASSWORD, HOST, PORT
3. MySQL option files.
Run Code Online (Sandbox Code Playgroud)

换句话说,如果在OPTIONS中设置数据库的名称,这将优先于NAME,后者将覆盖MySQL选项文件中的任何内容.


如果您只是在本地计算机上测试应用程序,则可以使用

python manage.py runserver
Run Code Online (Sandbox Code Playgroud)

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

Mysql默认字符集通常不是utf-8,因此请确保使用此sql创建数据库:

CREATE DATABASE mydatabase CHARACTER SET utf8 COLLATE utf8_bin
Run Code Online (Sandbox Code Playgroud)

如果您使用的是Oracle的MySQL连接器,那么您的ENGINE行应如下所示:

'ENGINE': 'mysql.connector.django',
Run Code Online (Sandbox Code Playgroud)

请注意,您首先需要在您的操作系统上安装mysql.

brew install mysql (MacOS)
Run Code Online (Sandbox Code Playgroud)

此外,mysql客户端包已更改为python 3(MySQL-Client仅适用于python 2)

pip3 install mysqlclient
Run Code Online (Sandbox Code Playgroud)


Rit*_*esh 25

首先请运行以下命令来安装python依赖项,否则python runserver命令将抛出错误.

sudo apt-get install libmysqlclient-dev
sudo pip install MySQL-python
Run Code Online (Sandbox Code Playgroud)

然后配置#Andy定义的settings.py文件,并在最后一次执行时:

python manage.py runserver
Run Code Online (Sandbox Code Playgroud)

玩得开心..!!


roo*_*oot 14

如上所述,您可以先从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. 您可以根据需要配置Web服务器,但默认情况下Web服务器位于http://localhost:80和数据库位置port 3306,而PhpMyadmin位于http://localhost/phpmyadmin/
  3. 从这里您可以看到您的数据库并使用非常友好的GUI访问它们.
  4. 创建要在Django项目中使用的任何数据库.
  5. 编辑您的settings.py文件,如:

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

    sudo apt-get install libmysqlclient-dev

    pip安装MySQL-python

  7. 而已!!您已经以非常简单的方式使用MySQL配置了Django.

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

    python manage.py migrate

    python manage.py runserver


Man*_*hav 14

如果您使用的是python3.x,请运行以下命令

pip install mysqlclient
Run Code Online (Sandbox Code Playgroud)

然后更改setting.py之类的

DATABASES = {
'default': {
    'ENGINE': 'django.db.backends.mysql',
    'NAME': 'DB',
     'USER': 'username',
    'PASSWORD': 'passwd',
  }
  }
Run Code Online (Sandbox Code Playgroud)

  • 我在 python 3.6 中使用 virtualenv。这救了我的命。谢谢你。另外记得先在mysql中创建DB (2认同)

mim*_*lea 7

实际上,不同的环境有许多问题,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
Run Code Online (Sandbox Code Playgroud)

你应该好好接受公认的答案.如果这对你很重要,可以删除不必要的包裹.


小智 6

运行这些命令

sudo apt-get install python-dev python3-dev

sudo apt-get install libmysqlclient-dev

pip安装MySQL-python

pip install pymysql

pip install mysqlclient

然后配置settings.py之类的

sudo apt-get install python-dev python3-dev
sudo apt-get install libmysqlclient-dev
pip install MySQL-python 
pip install pymysql
pip install mysqlclient
Run Code Online (Sandbox Code Playgroud)

享受mysql连接


小智 5

  1. 安装 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
Run Code Online (Sandbox Code Playgroud)
  1. 修改设置.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',"},
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)