python django mysql配置

时间:2023-03-08 20:06:00

1    django默认支持sqlite,mysql, oracle,postgresql数据库。

 <1> sqlite

django默认使用sqlite的数据库,默认自带sqlite的数据库驱动 , 引擎名称:django.db.backends.sqlite3

<2> mysql

引擎名称:django.db.backends.mysql

2    mysql驱动程序

  • MySQLdb(mysql python)
  • mysqlclient
  • MySQL
  • PyMySQL(纯python的mysql驱动程序)

3     在django的项目中会默认使用sqlite数据库,在settings里有如下设置:

python django mysql配置

如果我们想要更改数据库,需要修改如下:

python django mysql配置

DATABASES = {

    'default': {

        'ENGINE': 'django.db.backends.mysql', 

        'NAME': 'books',    #你的数据库名称

        'USER': 'root',   #你的数据库用户名

        'PASSWORD': '', #你的数据库密码

        'HOST': '', #你的数据库主机,留空默认为localhost

        'PORT': '', #你的数据库端口

    }

}
NAME即数据库的名字,在mysql连接前该数据库必须已经创建,而上面的sqlite数据库下的db.sqlite3则是项目自动创建

USER和PASSWORD分别是数据库的用户名和密码。

设置完后,再启动我们的Django项目前,我们需要激活我们的mysql。

然后,启动项目,会报错:no module named MySQLdb

这是因为django默认你导入的驱动是MySQLdb,可是MySQLdb对于py3有很大问题,所以我们需要的驱动是PyMySQL

所以,我们只需要找到项目名文件下的__init__,在里面写入:

import pymysql
pymysql.install_as_MySQLdb() 问题解决!

创建数据库

先用MySQL 创建一个数据库

python django mysql配置

然后在model.py里面写数据表

python django mysql配置

class Book(models.Model):
# id =
name = models.CharField(max_length=20)
price = models.FloatField()
pub_date = models.DateField() class Author(models.Model):
name = models.CharField(max_length=32)

在terminal运行python manage.py makemigrations

D:\pycharm\python_s3\Django_ORM>python manage.py makemigrations
Migrations for 'app01':
app01\migrations\0002_author.py
- Create model Author

在terminal运行python manage.py migrate

D:\pycharm\python_s3\Django_ORM>python manage.py migrate
Operations to perform:
Apply all migrations: admin, app01, auth, contenttypes, sessions
Running migrations:
Applying app01.0003_book_author... OK

表就建好了