首先在setting里面会配置好数据库的信息:这里默认的是使用sqlite3的数据库
1 | DATABASES = { |
Python支持这些引擎,详情见: https://docs.djangoproject.com/en/3.0/ref/settings/#databases
- ‘django.db.backends.postgresql’
- ‘django.db.backends.mysql’
- ‘django.db.backends.sqlite3’
- ‘django.db.backends.oracle’
切换成MySQL数据库
首先需要安装MySQL的python驱动库。这里使用mysqlclient
1 | pip install mysqlclient |
然后需要在setting里面更改数据库引擎和配置。
1 | DATABASES = { |
然后利用Navicat连接数据库,之后创建数据库。
接下来进行表单同步:
1 | python manage.py makemigrations |
同步表单后就可以看到表单数据了。
ORM机制
对象关系映射(英语:Object Relational Mapping,简称ORM),用于实现面向对象编程语言里不同类型系统的数据之间的转换.换句说,就是用面向对象的方式去操作数据库的创建表,增加、修改、删除、查询等操作
比如: 可以在QuerySet中调用query属性
在views.py
中:
1 | def index(request): |
这样会得到一套sql语句,然后再Navicat中查询一下query(询问)
1 | SELECT `auth_user`.`id`, `auth_user`.`password`, `auth_user`.`last_login`, `auth_user`.`is_superuser`, `auth_user`.`username`, `auth_user`.`first_name`, `auth_user`.`last_name`, `auth_user`.`email`, `auth_user`.`is_staff`, `auth_user`.`is_active`, `auth_user`.`date_joined` FROM `auth_user` |
查询结果
ORM优缺点
-
ORM使得我们通过数据库交互变的简单易行,并且完全不用考虑该死的SQL语句,快速开发,由此而来
-
可以避免一些你搜程序猿写sql语句带来的性能和效率问题
缺点:
-
性能有所牺牲。不过现在的各种ORM框架都在尝试使用各种方法来减轻这个问题(LazyLoad,Cache),效果还是很显著的
-
对于个别复杂查询,ORM仍然力不从心。为了 解决这个问题,ORM框架一般也提供了直接原生sql的方式