Django是怎么链接数据库的呢。

django模型映射关系:
模型类 >>>>>>>>>>>>>>>数据库
类属性>>>>>>>>>>>>>>>表字段名
- 模型类必须都写在app下的models.py文件中。
- 模型如果需要映射到数据库,所在的app必须被安装.
-
一个数据表对应一个模型类,表中的字段,对应模型中的类属性.
数据库的配置:
DATABASES = {
'default': {
# 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
'ENGINE':'django.db.backends.mysql',
'NAME':'mydb',
'USER':'root',
'PASSWORD':'xxxxxx',
'HOST':'192.168.1.100',
'PORT':'3306',
}
}
创建一个管理员用户myname账号,密码为 xxxxxx:
CREATE USER 'myname'@'%'IDENTIFIED BY 'xxxxxx';
给这个用户授予所有远程访问,这个用户主要用于管理整个数据库,备份,还原等操作。
GRANT ALL ON *.* TO 'myname'@'%';
使授权立即生效:
FLUSH PRIVILEGES;
pymsql数据库连接器的配置:
在虚拟环境或项目服务器中安装pymysql:
pip install pymysql
设置连接器为pymysql:
在主目录下的的__init__.py文件添加下面两句
import pymysql
pymysql.install_as_MySQLdb()

使用django中的模型:

将模型类映射到数据库:
在虚拟机执行:
1.首先执行以下命令,要创建映射文件
$ python manage.py makemigrations
2.执行以下命令,将映射文件中的映射数据提交到数据库中
$ python manage.py migrate
pycharm执行:Tools>>>>>>Run manage.py Taks...
1.首先执行以下命令,要创建映射文件
manage.py@django> makemigrations
2.执行以下命令,将映射文件中的映射数据提交到数据库中
manage.py@django> migrate
打开数据我们能看到创建的以app名_模型名的数据表,而其他的一些表格是django自动生成的.
注意:如果要删除表,那么可以去django模型中注释掉模型类,然后执行映射的命令,不要手动在命令行里面去删除.

数据的增删改查----------增加数据
from django.http import HttpResponse
from .models import User
# Create your views here.
def add_user(request):#增加
# 方法一
vie = User(name='apple',age=24)
vie.save()
# 方法二
rs = User()
rs.name = 'smith'
rs.age = 29
rs.save()
# 方法三
User.objects.create(name='john',age=18)
# 方法四
User.objects.get_or_create(name='abert',age=30)
return HttpResponse('数据插入成功')
数据的增删改查----------查找数据
def select_user(request):#查询
# 查询所有数据
ss = User.objects.all()
# 查询单一数据
ss = User.objects.get(id=1)
# 查询满足条件对象
ss = User.objects.filter(name='apple')
print(ss)
return HttpResponse('查询数据成功')
all()和filter()方法返回的是QuerySet对象.
get()方式返回的单个对象,如果符合条件的对象有多个,则get报错!
数据的增删改查--------数据库相关的接口(QuerySet API)
1.从数据库中查询出来的结果一般是一个集合,这个集合叫做 QuerySet.
2.QuerySet是可迭代对象.
3.QuerySet支持切片, 不支持负索引.
4.可以用list强行将QuerySet变成列表.
数据的增删改查----------修改数据
def update_user(request):#修改
# 现查找,在属性修改
vie = User.objects.get(id=3)
vie.name = 'banann'
vie.save()
# 使用update方法直接修改
User.objects.filter(name='apple').update(name='banana')
# 增加字段,并赋予默认值
#在这之前,我们在模型类中添加了一个city的属性,并设置了一个默认值,然后执行了映射命令,讲字段成功映射到了数据库中.
User.objects.all().update(city='beijing')
return HttpResponse('数据修改完成')
数据的增删改查----------删除数据
def delete_user(request):#删除
User.objects.get(id=5).delete()
User.objects.filter(name='apple').delete()
User.objects.all().delete()
return HttpResponse('数据删除成功')
网友评论