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

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

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

这是我的第一个大困惑.在教程中,我跟踪了安装Django的人,开始了他的第一个项目,重新启动了Apache,Django从此开始工作.他打开浏览器,进入Django默认页面,没有任何问题.

然而,我必须将CD放入我的第一个Web文件夹并运行

python manage.py runserver myip:port

而且很管用.没问题.但我想知道它是否应该像这样工作,这是否会带来问题?

我的second question是我想设置它,以便它使用我的MySQL数据库.我进入我的设置.py位于/firstweb/firstweb下,我看到了引擎和名称,但我不确定该放在这里什么.

然后在用户、密码和主机区域,这是我的数据库及其凭据吗?如果我用的是localhost,我能把localhost放在主办区吗?

推荐答案

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',
    }
}

从Django 1.7开始,您还可以 Select 使用MySQL option files.您可以通过如下方式设置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.

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


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

python manage.py runserver

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

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)

此外,Python3的mysql客户端包也发生了变化(MySQL-Client只适用于Python2)

pip3 install mysqlclient

Python相关问答推荐

等待元素出现在Selenium中(WebDriverWait)

如何在Python中将CSV数据直接从字符串(或字节)写入duckDB数据库文件?

如何在telegram 机器人中发送音频?

无法导入已安装的模块

如何在矩阵上并行化简单循环?

Twilio:CallInstance对象没有来自_的属性'

跟踪我已从数组中 Select 的样本的最有效方法

如果索引不存在,pandas系列将通过索引获取值,并填充值

计算所有前面行(当前行)中列的值

如何使用SubProcess/Shell从Python脚本中调用具有几个带有html标签的参数的Perl脚本?

如何自动抓取以下CSV

韦尔福德方差与Numpy方差不同

Python库:可选地支持numpy类型,而不依赖于numpy

为什么默认情况下所有Python类都是可调用的?

pyscript中的压痕问题

如何将多进程池声明为变量并将其导入到另一个Python文件

pandas:排序多级列

导入...从...混乱

在www.example.com中使用`package_data`包含不包含__init__. py的非Python文件

寻找Regex模式返回与我当前函数类似的结果