194

我想稍微远离 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 区域吗?

4

13 回答 13

359

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

从 Django 1.7 开始,您还可以选择使用 MySQL选项文件。您可以通过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.

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


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

python manage.py runserver

添加ip:port参数允许您自己以外的机器访问您的开发应用程序。准备好部署应用程序后,我建议您查看djangobook上的部署 Django一章

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

CREATE DATABASE mydatabase CHARACTER SET utf8 COLLATE utf8_bin

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

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

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

brew install mysql (MacOS)

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

pip3 install mysqlclient
于 2013-10-04T20:09:55.663 回答
27

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

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

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

python manage.py runserver

玩得开心..!!

于 2014-08-29T13:56:22.733 回答
22

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

pip install mysqlclient

然后像这样更改setting.py

DATABASES = {
'default': {
    'ENGINE': 'django.db.backends.mysql',
    'NAME': 'DB',
     'USER': 'username',
    'PASSWORD': 'passwd',
  }
  }
于 2016-10-06T11:56:10.603 回答
16

如上所述,您可以先从https://www.apachefriends.org/download.html轻松安装 xampp, 然后按照以下说明进行操作:

  1. 从http://www.unixmen.com/install-xampp-stack-ubuntu-14-04/安装并运行 xampp ,然后从 GUI 启动 Apache Web 服务器和 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': '',
    }}
    
  6. 在 virtualenv 中安装以下软件包(如果您在 virtualenv 上使用 django,这是更可取的):

    sudo apt-get install libmysqlclient-dev

    点安装 MySQL-python

  7. 就是这样!!您已经以非常简单的方式使用 MySQL 配置了 Django。

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

    python manage.py 迁移

    python manage.py 运行服务器

于 2014-12-03T11:14:43.243 回答
7

实际上,不同环境,python版本等存在很多问题。您可能还需要安装 python 开发文件,因此要“强制”安装,我将运行所有这些:

sudo apt-get install python-dev python3-dev
sudo apt-get install libmysqlclient-dev
pip install MySQL-python
pip install pymysql
pip install mysqlclient

您应该很好地接受已接受的答案。如果这对您很重要,可以删除不必要的包。

于 2014-12-04T19:38:37.163 回答
7

运行这些命令

sudo apt-get install python-dev python3-dev
sudo apt-get install libmysqlclient-dev
pip install MySQL-python 
pip install pymysql
pip install mysqlclient

然后像这样配置settings.py

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'django_db',
        'HOST': '127.0.0.1',
        'PORT': '3306',
        'USER': 'root',
        'PASSWORD': '123456',
    }
}

享受mysql连接

于 2016-05-20T08:01:58.777 回答
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

  1. 修改settings.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',"},
        }
    }
    
于 2020-01-08T13:16:41.197 回答
4

Andy 的回答有帮助,但如果您担心在 django 设置中暴露您的数据库密码,我建议您在 mysql 连接上遵循 django 官方配置:https ://docs.djangoproject.com/en/1.7/ref/databases/

此处引用为:

# settings.py
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'OPTIONS': {
            'read_default_file': '/path/to/my.cnf',
        },
    }
}


# my.cnf
[client]
database = NAME
user = USER
password = PASSWORD
default-character-set = utf8

要替换设置中的 'HOST': '127.0.0.1',只需将其添加到 my.cnf 中:

# my.cnf
[client]
database = NAME
host = HOST NAME or IP
user = USER
password = PASSWORD
default-character-set = utf8

另一个有用的选项是为 django 设置存储引擎,您可能希望在 setting.py 中使用它:

'OPTIONS': {
   'init_command': 'SET storage_engine=INNODB',
}
于 2015-03-29T04:13:55.860 回答
4

设置.py

DATABASES = {
'default': {
    'ENGINE': 'django.db.backends.mysql',
    'NAME': 'django',
    'USER': 'root',
    'PASSWORD': '*****',
    'HOST': '***.***.***.***',
    'PORT': '3306',
    'OPTIONS': {
        'autocommit': True,
    },
}

}

然后:

python manage.py migrate

如果成功将生成这些表:

auth_group
auth_group_permissions
auth_permission
auth_user
auth_user_groups
auth_user_user_permissions
django_admin_log
django_content_type
django_migrations
django_session

你可以使用mysql。

这是一个展示示例,在 Django 版本 1.11.5 上进行测试: Django-pool-showcase

于 2017-09-22T09:54:15.897 回答
1

按照给定的步骤将其设置为使用 MySQL 数据库:

1) Install MySQL Database Connector :

    sudo apt-get install libmysqlclient-dev

2) Install the mysqlclient library :

    pip install mysqlclient

3) Install MySQL server, with the following command :

    sudo apt-get install mysql-server

4) Create the Database :

    i) Verify that the MySQL service is running:

        systemctl status mysql.service

    ii) Log in with your MySQL credentials using the following command where -u is the flag for declaring your username and -p is the flag that tells MySQL that this user requires a password :  

        mysql -u db_user -p


    iii) CREATE DATABASE db_name;

    iv) Exit MySQL server, press CTRL + D.

5) Add the MySQL Database Connection to your Application:

    i) Navigate to the settings.py file and replace the current DATABASES lines with the following:

        # Database
        # https://docs.djangoproject.com/en/2.0/ref/settings/#databases

        DATABASES = {
            'default': {
                'ENGINE': 'django.db.backends.mysql',
                'OPTIONS': {
                    'read_default_file': '/etc/mysql/my.cnf',
                },
            }
        }
        ...

    ii) Next, let’s edit the config file so that it has your MySQL credentials. Use vi as sudo to edit the file and add the following information:

        sudo vi /etc/mysql/my.cnf

        database = db_name
        user = db_user
        password = db_password
        default-character-set = utf8

6) Once the file has been edited, we need to restart MySQL for the changes to take effect :

    systemctl daemon-reload

    systemctl restart mysql

7) Test MySQL Connection to Application:

    python manage.py runserver your-server-ip:8000
于 2018-06-05T15:55:12.267 回答
1

这是一个相当古老的问题,但如果有人正在使用任何最新版本的 python 和 django,您可以按照以下步骤操作

Note - Versions
    Python version - 3.9.5
    Django version - 3.2.4
    MySQL server version - 5.7

安装django后,运行以下命令

pip install mysqlclient

在我的 IDE 中,如果我这样做pip list是包和版本的列表

Package     Version
----------- -------
asgiref     3.3.4
Django      3.2.4
mysqlclient 2.0.3
pip         21.1.2
pytz        2021.1
setuptools  57.0.0
sqlparse    0.4.1

现在,确保您已经创建了要使用的数据库模式。

settings.pyDATABASES 更改下的 django 项目文件中

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3',
    }
}

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

你应该能够同时运行

python manage.py makemigrations

python manage.py migrate
于 2021-06-23T12:07:31.937 回答
0

您必须先创建一个 MySQL 数据库。然后转到settings.py文件并'DATABASES'使用您的 MySQL 凭据编辑字典:

DATABASES = {
 'default': {
 'ENGINE': 'django.db.backends.mysql',
 'NAME': 'YOUR_DATABASE_NAME',
 'USER': 'YOUR_MYSQL_USER',
 'PASSWORD': 'YOUR_MYSQL_PASS',
 'HOST': 'localhost',   # Or an IP that your DB is hosted on
 'PORT': '3306',
 }
}

这是设置 Django 以在 virtualenv 上使用 MySQL 的完整安装指南:

http://codex.themedelta.com/how-to-install-django-with-mysql-in-a-virtualenv-on-linux/

于 2015-06-19T16:41:32.080 回答
-1
python3 -m pip install mysql-connector
pip install mysqlclient

这些命令有助于在 django 中无错误地设置 mysql 数据库

于 2020-12-01T13:37:12.247 回答