Django 模型使用自带的 ORM。
对象关系映射(Object Relational Mapping,简称 ORM )用于实现面向对象编程语言里不同类型系统的数据之间的转换。
ORM 在业务逻辑层和数据库层之间充当了桥梁的作用。
ORM 是通过使用描述对象和数据库之间的映射的元数据,将程序中的对象自动持久化到数据库中。
使用 ORM 的好处:
Application name 可以不填
等到pycharm 创建虚拟环境之后,直接可以点击右上角运行 查看Django项目是否创建成功
点击链接 出现以下界面就代表创建成功了
注意: 如果是连接Sql Server 需要另外安装一个包 mssql-django
pip install mssql-django
DATABASES = {
'default': {
'ENGINE': 'mssql',
'NAME': 'library', # 数据库名称
'HOST': '127.0.0.1', # 地址
'PORT': '1433', # 端口
'USER': 'sa', # 用户名
'PASSWORD': '123456', # 密码
'OPTIONS': {
'driver': 'ODBC Driver 17 for SQL Server',
'MARS_Connection': True,
},
}
}
重新启动如果不报错,说明连接没有问题
Django 规定,如果要使用模型,必须要创建一个 app。我们使用以下命令创建一个 TestModel 的 app。 starapp 后面接 app名字 pycharm默认是不创建APP的
django-admin startapp bookModel
在pycharm 底部 Terminal 输入即可,创建完成之后 会在项目下多出现一个bookModel文件夹
修改bookModel文件夹下的models.py 新增一个类,这个类的属性与数据表一一对应,不需要去SQLserver创建数据表,django 会帮我们创建
from django.db import models
# Create your models here.from django.db import models
class Reader(models.Model):
name = models.CharField(max_length=100)
reader_id = models.CharField(max_length=50, unique=True)
password = models.CharField(max_length=100)
address = models.CharField(max_length=200)
def __str__(self):
return self.name
接下来在 settings.py 中找到INSTALLED_APPS这一项,如下:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'bookModel', #添加到这
]
在命令行中运行:
python manage.py migrate
python manage.py makemigrations bookModel # 让 Django 知道我们在我们的模型有一些变更
python manage.py migrate bookModel # 创建表结构
当出现以下结果 说明创建成功
打开SQLserver 会发现数据库多了几张表 其中django默认增添了admin相关的表
表名组成结构为:应用名_类名(如:TestModel_test)。
在目录中添加 testdb.py 文件,并修改 urls.py:
from . import testdb
urlpatterns = [
path('admin/', admin.site.urls),
path('testdb/', testdb.testdb),
]
在testdb.py中添加testdb 方法
def testdb(request):
new_reader = Reader.objects.create(
name='John Doe',
reader_id='16',
password='secure_password',
address='123 Main St, City'
)
new_reader.save()
return HttpResponse("<p>数据添加成功!</p>")
重启django服务器 在浏览器输入127.0.0.1:8000/testdb/
查看数据库
提供标准的CRUD 请根据业务需求修改
from django.http import HttpResponse
from django.core import serializers
from django.shortcuts import get_object_or_404
from bookModel.models import Reader
# 数据库操作def testdb(request):
new_reader = Reader.objects.create(
name='John Doe', reader_id='116', password='secure_password', address='123 Main St, City' )
new_reader.save()
return HttpResponse("<p>数据添加成功!</p>")
def selectAllReader(request):
all_readers = Reader.objects.all()
# 2. 将数据序列化成json格式 data = serializers.serialize('json', queryset=all_readers)
# 3. 返回 return HttpResponse(data)
def get_reader_by_id(request, reader_id):
# 根据read_id 查询数据 reader = Reader.objects.filter(c=reader_id).first()
print(reader) # 检查打印的reader对象 data = serializers.serialize('json', queryset=[reader])
return HttpResponse(data)
def update_reader(request):
try:
# 获取要修改的 Reader 对象 reader = Reader.objects.get(pk=1)
# 更新属性值 reader.name = "Marxist" reader.save() # 保存修改 return HttpResponse("<p>Reader对象已成功更新!</p>")
except Reader.DoesNotExist:
return HttpResponse("<p>未找到具有该ID的Reader对象。</p>")
def delete_reader(request):
try:
# 获取要删除的 Reader 对象 reader = Reader.objects.get(pk=1)
# 删除对象 reader.delete()
return HttpResponse("<p>Reader对象已成功删除!</p>")
except Reader.DoesNotExist:
return HttpResponse("<p>未找到具有该ID的Reader对象。</p>")