Django模型
来源:互联网 发布:阿里云开启3306端口 编辑:程序博客网 时间:2024/05/21 18:45
Django模型
Django对各种数据库提供了很好的支持。包括MySQL,SQLite,Orcale等。
Django为这些数据库提供了统一的调用api。可以根据不同的业务,选择不同的数据库。
下面使用Mysql数据库作为演示。
如果没有安装MySQL的驱动包,可以使用pip安装
pip install pymysql
数据库的配置
在项目的settings.py文件中找到DATABASES配置项,将其信息改为:
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'db_django', #你的数据库名称 'USER': 'root', #你的数据库用户名 'PASSWORD': 'root', #你的数据库密码 'HOST': '', #你的数据库主机,留空默认为localhost 'PORT': '3306', #你的数据库端口 }}
如果运行报下面的错误:
Unhandled exception in thread started by <function check_errors.<locals>.wrapper at 0x0000025828AC0D90>Traceback (most recent call last): File "D:\dsoftinstall\Anaconda\lib\site-packages\django\db\backends\mysql\base.py", line 26, in <module> import MySQLdb as DatabaseModuleNotFoundError: No module named 'MySQLdb'
可以在项目的init.py文件中加上
import pymysqlpymysql.install_as_MySQLdb()
定义模型
- 创建一个APP
Django规定,如果需要使用模型,需要创建一个APP。下面在项目目录下,使用下面命令创建一个test_model的app。
django-admin startapp testmodel
目录结构如:
- 修改testmodel/models.py文件,代码如下:
from django.db import modelsclass Person(models.Model): name = models.CharField(max_length=20) age = models.IntegerFiled()
- 注册APP(配置APP信息)
在test_django目录下的settings.py文件中,修改INSTALLED_APPS信息,如下:
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'testmodel', # 添加test_model到配置中]
- 创建表结构
python manage.py migrate # 创建表结构或者python manage.py makemigrations testmodel # 让 Django知道我们在我们的模型有一些变更python manage.py migrate testmodel # 创建表结构
当看到Create table的时候,表示创建成功,如:
- 修改项目下的urls.py配置
在testmodel目录下的tests.py定义一个testdb的方法,如:
from testmodel.models import Personfrom django.http import HttpResponsedef testdb(request): pass
在urls.py文件中,配置url的连接
from django.conf.urls import url# from django.contrib import adminfrom testmodel import testsurlpatterns = [ url(r'^testdb', tests.testdb)]
- 添加数据
在tests.py文件的testdb方法中添加数据:
from testmodel.models import Personfrom django.http import HttpResponsedef add(request): person = Person(name='zhangsan', age=19) person.save() # 添加数据 return HttpResponse('数据添加成功')
在urls.py文件,添加一个url,如:
urlpatterns = [ ... url(r'^add/testdb/', tests.add), ...]
在浏览器输入127.0.0.1:8000/add/testdb
,显示数据添加成功,表示添加数据成功,如下图:
如果报错ProgrammingError (1146, "Table 'db_django.testmodel_person' doesn't exist")
错误则是testmodel_person表没有创建好,执行以下代码即可:
python manage.py makemigrations testmodel # 让 Django知道我们在我们的模型有一些变更python manage.py migrate testmodel # 创建表结构
- 更新数据
在testmodel/tests.py下,创建一个update方法,如:
def update(request): person = Person.objects.get(id=1) person.name = 'laowang' person.age = 30 person.save() # 另外一种更新操作 # Person.objects.filter(id=1).update(name='laowang', age=30) return HttpResponse('数据更新成功')
在urls.py文件中,配置url
urlpatterns = [ ... url(r'^update/testdb/', tests.update), ...]
在浏览器输入127.0.0.1:8000/update/testdb
,显示数据更新成功,表示数据更新成功
- 删除数据
在testmodel/tests.py文件,定义一个delete方法。如:
def delete(request): person = Person.objects.get(id=1) person.delete() # 另外一种方式 # Person.objects.filter(id=1).delete() # 删除所有数据 # Person.objects.all().delete() return HttpResponse('数据删除成功')
在testdjango/urls.py文件中,配置一个url,如:
urlpatterns = [ ... url(r'^del/testdb/', tests.delete), ...]
在浏览器中输入127.0.0.1:8000/del/testdb
,显示数据删除成功,表示成功。
- 获取数据
在testmodel/tests.py文件,定义一个query方法。如:
def query(request): list = Person.objects.all() # 获取数据库所有数据 results = '' for item in list: result = item.name + " " + str(item.age) + " " results += result return HttpResponse(results)
在testdjango/urls.py文件中,配置一个url,如:
urlpatterns = [ ... url(r'^query/testdb/', tests.query), ...]
在浏览器中输入127.0.0.1:8000/query/testdb
,显示数据库中查询出的数据
,表示成功。
除了查询所有,还有其他操作,如:
Person.objects.all() # 查询所有数据Person.object.get(id=1) # 查询id=1的数据Person.objects.get(name='lisi') # 查询name='lisi'的数据Person.objects.order_by('name')[0:2] # 查询以name排序后,限制取出2条数据
详情参考:Django的增删改查操作
- DJANGO模型
- Django:模型
- Django 模型
- Django-模型
- Django 模型
- Django 模型
- Django模型
- Django模型
- Django模型
- Django-模型
- 【Django】Django 模型 使用指南
- Django系列四:Django 模型
- django模型一
- django模型1
- django模型2
- django模型3
- django模型4
- django模型5
- python 斐波那契数列
- 【NOIP2017提高A组集训10.28】图
- 西安现场打铁记
- 拉格朗日乘子法(Lagrange Multiplier)详解以及乘子lambda的意义
- Kubernetes集群部署(redhat7.2)
- Django模型
- rpm,yum,软件安装,yum源的配置
- SQL数据库select基本使用
- 获取主机名称和ip,用户名
- Python学习零散杂记(2017-10-30)
- 1730-Northcott Game
- HCS12加载RAM并执行Bootloader用户指南
- 【六】机器学习之路——线性回归python实现(2)
- 安卓开发使用百度地图sdk实现定位,添加marker,城市切换等功能