python - 设置 Django 以使用 MySQL

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

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

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

这是我的第一个大困惑。在教程中,我跟随那个人安装了 Django,开始了他的第一个项目,重新启动了 Apache,从那时起 Django 就开始工作了。他打开浏览器,毫无问题地进入了 Django 默认页面。

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

python manage.py runserver myip:port

而且它有效。没问题。但我想知道它是否应该像这样工作,这是否会导致问题?

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

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

最佳答案

MySQL support很容易添加。在您的 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',
    }
}

您还可以选择使用 MySQL option files ,从 Django 1.7 开始。您可以通过像这样设置 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.

In other words, if you set the name of the database in OPTIONS, this will take precedence over NAME, which would override anything in a MySQL option file.


如果你只是在本地机器上测试你的应用程序,你可以使用

python manage.py runserver

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

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

CREATE DATABASE mydatabase CHARACTER SET utf8 COLLATE utf8_bin

如果您使用 Oracle's MySQL connector您的 ENGINE 行应如下所示:

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

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

brew install mysql (MacOS)

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

pip3 install mysqlclient

https://stackoverflow.com/questions/19189813/

相关文章:

python - 如何从外部访问本地 Django 网络服务器

linux - 如何在 vi 编辑器中删除选定的文本

c - 在 Linux 中启动 GDB 时如何传递命令行参数?

python - 检查一个单词是否在 Python 中的字符串中

Python 请求 - 无连接适配器

linux - 如何在 shell 变量中获取网页的内容?

python - Django 的嵌套 Meta 类是如何工作的?

c - DESTDIR 和 PREFIX 的 make

android - Eclipse Android 插件 -- libncurses.so.5

linux - 如何管道或重定向 curl -v 的输出?