设置Django以使用MySQL

2020-12-04 15:34:28 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我有一个非生产服务器,用来测试所有的web开发内容。它是一个Debian7.1LAMP堆栈,运行的是MariaDB,而不是普通的MySQL服务器包。

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

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

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

python manage.py runserver myip:port

而且有效。没问题。但我想知道它是否应该像这样工作,这是否会在生产线上引起问题?

我的第二个问题是我想设置它以便它使用我的MySQL数据库。我进入/firstweb/firstweb下的settings.py,看到了引擎和名称,但我不知道放在这里的是什么。

然后在用户、密码和主机区域中,这是我的数据库及其凭据吗?如果我使用的是localhost可以将localhost放在主机区域吗?

3条回答
网友
1楼 ·

如果您使用python3.x,那么运行下面的命令

pip install mysqlclient

然后更改setting.py like

DATABASES = {
'default': {
    'ENGINE': 'django.db.backends.mysql',
    'NAME': 'DB',
     'USER': 'username',
    'PASSWORD': 'passwd',
  }
  }
网友
2楼 ·

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

sudo apt-get install libmysqlclient-dev
sudo pip install MySQL-python

然后按照安迪的定义配置settings.py文件,最后执行:

python manage.py runserver

玩得开心。。!!

网友
3楼 ·

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开始,您还可以选择使用MySQLoption 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.

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参数允许您自己以外的机器访问您的开发应用程序。一旦您准备好部署应用程序,我建议您查看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)

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

pip3 install mysqlclient

相关问题