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 里有如下设置:
如果我们想要更改数据库, 需要修改如下:
- DATABASES = {
- 'default': {
- 'ENGINE': 'django.db.backends.mysql',
- 'NAME': 'books', #你的数据库名称
- 'USER': 'root', #你的数据库用户名
- 'PASSWORD': '', #你的数据库密码
- 'HOST': '', #你的数据库主机, 留空默认为 localhost
- 'PORT': '3306', #你的数据库端口
- }
- }
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 创建一个数据库
然后在 model.py 里面写数据表
- 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
表就建好了
来源: https://www.cnblogs.com/hb15988111121/p/12818245.html