orm
1. ORM
定义:object relations mapping,对象关系映射。它实现了数据模型与数据库的解耦
当models里的内容发生改变时,每改变一次执行一次下边的两行代码
python manage.py makemigrations #只是生成一个操作记录,类似logging日志
python manage.py migrate #在数据库中进行正正的操作,建表,删表等
python manage.py makemigrations
python manage.py migrate
没有设置时,执行连接Django自带的数据库,sqllite3
mysqldb 不支持python3.4以上版本
执行包文件init文件
django 连接mysql
1 settings配置文件中
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'orm02',
'USER':'root',
'PASSWORD':'666',
'HOST':'127.0.0.1',
'PORT':3306,
}
}
2 项目文件夹下的init文件中写上下面内容,用pymysql替换mysqldb
import pymysql
pymysql.install_as_MySQLdb()
3 models文件中创建一个类
# class UserInfo(models.Model):
# id = models.AutoField(primary_key=True)
# name = models.CharField(max_length=10)
# bday = models.DateField()
# checked = models.BooleanField()
4 执行数据库同步指令
# python manage.py makemigrations
# python manage.py migrate
5 创建记录(实例一个对象,调用save方法)
def query(request):
# 创建一条记录,增
new_obj = models.UserInfo(
id=2,
name='子文',
bday='2019-09-27',
checked=1,
)
new_obj.save() #翻译成sql语句,然后调用pymysql,发送给服务端 insert into app01_userinfo values(2,'子文','2019-09-27',1)
return HttpResponse('xxx')
1. ORM
定义:object relations mapping,对象关系映射。它实现了数据模型与数据库的解耦
每个数据库有自己的sql语句,不通用。
1.将对象翻译成sql语句
2.Django内置的一个pymysql客户端将sql语句发送给mysql服务端
3.服务端拿到sql,到磁盘里面进行数据操作
Django默认数据库为sqlite3,比较鸡肋,设置为mysql数据库修改settings配置文件
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', #Django中数据库地址
'NAME':'bms', # 要连接的数据库名,连接前先cmd建库
'USER':'root', # 连接数据库的用户名
'PASSWORD':'', # 连接数据库的密码
'HOST':'127.0.0.1', # 连接主机,默认本级
'PORT':3306, # 端口 默认3306
}
}
如有必要,可以为自己的项目下的 app 配置单独的数据库,如下代码
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME':'bms', # 要连接的数据库,连接前需要创建好
'USER':'root', # 连接数据库的用户名
'PASSWORD':'', # 连接数据库的密码
'HOST':'127.0.0.1', # 连接主机,默认本级
'PORT':3306 # 端口 默认3306
},
'app01': { #可以为每个app都配置自己的数据,并且数据库还可以指定别的,也就是不一定就是mysql,也可以指定sqlite等其他的数据库
'ENGINE': 'django.db.backends.mysql',
'NAME':'bms', # 要连接的数据库,连接前需要创建好
'USER':'root', # 连接数据库的用户名
'PASSWORD':'', # 连接数据库的密码
'HOST':'127.0.0.1', # 连接主机,默认本级
'PORT':3306 # 端口 默认3306
}
}
设置完后,再启动我们的Django项目前,我们需要激活我们的mysql。然后,启动项目,会报错:no module named MySQLdb 。
这是因为django默认你导入的驱动是MySQLdb,可是MySQLdb 不支持python3.4以上版本,所以我们需要的驱动是PyMySQL 所以,我们只需要找到项目名文件下的__init__,执行替换命令
import pymysql
pymysql.install_as_MySQLdb()
cmd终端创建数据库,并在pycharm下创建类
3 models文件中创建一个类
# class UserInfo(models.Model):
# id = models.AutoField(primary_key=True)
# name = models.CharField(max_length=10)
# bday = models.DateField()
# checked = models.BooleanField()
最后通过两条数据库迁移命令即可在指定的数据库中创建表 :
python manage.py makemigrations
#生成记录,每次修改了models里面的内容或者添加了新的app,新的app里面写了models里面的内容,类似于logging
python manage.py migrate
#执行上面这个语句的记录来创建表,生成的表名字前面会自带应用的名字,例如:你的book表在mysql里面叫做app01_book表
数据库查看创建的表show tables; desc app02_a; (app名 下划线 类名)
pycharm查看数据库
![
![
通过界面实现增删改查,每次操作后上传
通过代码实现增删改查
#设置主键相同时,新增数据覆盖原有的数据