我想稍微远离 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 支持很容易添加。在您的DATABASES字典中,您将有这样的条目:
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从上面创建具有类似设置的文件
/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,这将覆盖 MySQL 选项文件中的任何内容。
如果您只是在本地机器上测试您的应用程序,您可以使用
python manage.py runserver
添加ip:port参数允许您自己以外的机器访问您的开发应用程序。准备好部署应用程序后,我建议您查看djangobook上的部署 Django一章
ip:port
Mysql 默认字符集通常不是 utf-8,因此请确保使用此 sql 创建数据库:
CREATE DATABASE mydatabase CHARACTER SET utf8 COLLATE utf8_bin
如果您使用Oracle 的 MySQL 连接器,您的ENGINE行应如下所示:
ENGINE
'ENGINE': 'mysql.connector.django',
请注意,您首先需要在您的操作系统上安装 mysql。
brew install mysql (MacOS)
此外,python 3 的 mysql 客户端包已更改(MySQL-Client仅适用于 python 2)
MySQL-Client
pip3 install mysqlclient