django ORM 数据库操作mysql,建表连库
表与表之间的关系:
一对多
多对多
一对一
不依赖于别的表(有主动权的表)叫做主表
django项目:
第一步:models.py里写类和字段(相当于表);
from django.db import models # Create your models here. class Book(models.Model): #必须继承models.Model这个类,jango才能识别Book是一张表 name=models.CharField(max_length=20)#charfield字符串类型,长度20 #price=models.FloatField()类似于float可以加上长度小鼠几位。。。 price=models.IntegerField () pub_date=models.DateField()
第二部:终端terminal写语句,(migrations是应用文件夹下的第一个文件夹名称,自己可改)
python manage.py makemigrations
第三部:终端输入(这两句必须配合使用)
python manage.py migrate
第4部;点击templates文件夹下哪个新生成的数据库标识,在有上方出现新的页面点击加号选择数据库此处sqllit为例,点击它,新页面继续sqlite选择,没有就点击下载,然后把左边template文件夹里的数据库拖入右边新出现的sqlite双击新的db就可查看表,添加信息,
删除:先删db,然后template里的数据库,然后migrations里的除了init另一个py文件
连接mysql:
第一步配置信息:settings里,把原来的databases替换
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'books', #你的数据库名称 'USER': 'root', #你的数据库用户名 'PASSWORD': '123', #你的数据库密码 'HOST': '', #你的数据库主机,留空默认为localhost 'PORT': '3306', #你的数据库端口 } }
models。py文件写入类
class Book(models.Model): #必须继承models.Model这个类,jango才能识别Book是一张表 name=models.CharField(max_length=20)#charfield字符串类型,长度20 #price=models.FloatField() price=models.IntegerField () pub_date=models.DateField()
然后终端python manage.py makemigrations
当出现
no module named MySQLdb 换驱动引擎
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() 问题解决!
终端输入python manage.py migrate执行,
mysql先前要建好库名,然后use 库名
mysql输入数据库名,用户名密码,打开就有表了,