<font color="red">欢迎阅读本专栏其他文章</font>
# django 连接 mysql
DATABASES = [
'default' = {
'ENGINE': 'django.db.backends.mysql',
'NAME': '数据库名',
'PASSWORD': '数据库密码',
'HOST': '127.0.0.1',
'PORT': '3306',
}
]
- 需要在项目文件下的__init__文件中导入pymysql包
```python
# 在主项目的__init__文件中
import pymysql
pymysql.install_as_MySQLdb()
```
python3 manage.py makemigrations
python3 manage.py migrate
# 如果迁移过程中出现没有变化或者报错,可以尝试强制迁移
# 强制迁移命令
python3 manage.py makemigrations 应用名
python3 manage.py migrate 应用名
1. 启动命令行: python3 manage.py shell
ps: 注意点: 对orm的操作分为静态函数和非静态函数两种,静态是指在内存中只有一份内容存在,调用的时候使用 类名. 的方式,如果修改了那么所有使用的人都会受影响
2. 在命令行中导入对应的映射类
from 应用.models import 类名
3. 使用 objects 属性操作数据库,objects 是模型中实际和数据库进行交互的 Manager 类的实例化对象
4. 查询命令
- 类名.objects.all() 查询数据表中的所有内容,返回的结果是一个 QuerySet 类型,实际上是类列表中装这个一个一个数据对象
- 类名.objects.filter(条件)
# from 应用名.models import 类名
from myapp.models import Student
# 查询Student表中的所有数据,得到的是一个QuerySet类型
Student.objects.all()
# 如果要取出所有QuerySet类型中的所有数据对象,需要遍历取出所有的对象,再用对象.属性来查看值
s = Student.object.all()
for each in s:
print(each.name , each.age , each.address , each.phone)
# 如果要进行过滤筛选,使用filter()方法
Student.objects.filter(age=18)
对象 = 类() # 使用类实例化对象
对象.属性 = 值 # 给对应的对象的属性赋值
对象.save() # 必须要执行保存操作,否则数据没有进入数据库
# python3 manage.py shell 命令行中添加数据
# from 应用名.models import 类名
from myapp.models import Student
# 实例化对象
s = Student()
# 给对象的属性赋值
s.name = 'ruochen'
s.address = 'xxx'
s.phone = '18888888888'
s.age = 18
# 保存数据
s.save()
# 查找年龄大于18的老师
ta = Teacher.objects.filter(age__gt=18)
# 小于20
ta = Teacher.objects.filter(age__lt=20)
# 查找course中包含a字母的老师
ta = Teacher.objects.filter(course__contains="a")
models.py
s = School()
s.school_id = 2
s.school_name = "sssss"
s.save()
# 方法一
m = Manager()
m.manager_id = 10
m.manager_name = "ruochen"
m.my_school = s
m.save()
# 方法二
m = Manager.objects.create(manager_id=20, manager_name="ruo", my_school=ss[0])
Manager.objects.get(manager_name="ruochen").my_school.school_name
In [43]: s = School.objects.get(manager__manager_name="ruochen")
In [44]: s
Out[44]: <School: sssss>
In [47]: s.school_name = "111"
In [48]: s.save()
In [53]: ss = School.objects.all()
In [54]: type(ss)
Out[54]: django.db.models.query.QuerySet
In [55]: ss.update(school_name="666")
Out[55]: 2
In [57]: ss
Out[57]: [<School: 666>, <School: 666>
# 方法一
In [3]: t1 = Teacher()
In [4]: t1.teacher_name = "若尘"
In [5]: t1.my_school = ss[0]
In [6]: t1.save()
In [7]: ts = Teacher.objects.all()
In [8]: ts
Out[8]: [<Teacher: Teacher object>]
In [9]: ts[0].teacher_name
Out[9]: '若尘'
# 方法二
In [21]: t2 = Teacher.objects.create(teacher_name="ruochen2", my_school=ss[0])
In [22]: ts = Teacher.objects.all()
In [23]: ts
Out[23]: [<Teacher: Teacher object>, <Teacher: Teacher object>]
In [24]: ts[1].teacher_name
Out[24]: 'ruochen2'
In [30]: t1.my_school
Out[30]: <School: 666>
In [34]: s1.teacher_set.all()
Out[34]: [<Teacher: Teacher object>, <Teacher: Teacher object>]
In [36]: s1.teacher_set.all().filter(teacher_name="若尘")
Out[36]: [<Teacher: Teacher object>]
In [2]: stus = Student.objects.all()
In [3]: stus
Out[3]: []
In [4]: s1 = Student()
In [5]: s1.student_name = "ruochen"
In [6]:
In [6]: t1 = Teacher.objects.all()
In [7]: t1
Out[7]: [<Teacher: Teacher object>, <Teacher: Teacher object>]
In [9]: t1.teacher_name
Out[9]: '若尘'
In [12]: s1.save()
In [17]: s1.teachers.add(t1)
In [18]: s1.teachers.all()
Out[18]: [<Teacher: Teacher object>]
In [19]: s1.save()
In [24]: s1.teachers.all()[0].teacher_name
Out[24]: '若尘'
In [25]: t1.student_set.all()
Out[25]: [<Student: Student object>]
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。