【Django】数据库操作
来源:互联网 发布:成都培训java多少人 编辑:程序博客网 时间:2024/06/05 09:51
1 settings.py的配置
之前博文里面以及提及过django数据库连接的配置
DATABASES = { 'default': { #'ENGINE': 'django.db.backends.sqlite3', # 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), 'ENGINE': 'django.db.backends.mysql', 'NAME': 'scrapytest1', 'USER':'**', 'PASSWORD':'**', 'HOST':'127.0.0.1', 'PORT':'3306', }}
2 同步迁移
在blog/models.py中定义需要的模型:
class hot(models.Model): #id = models.AutoField(max_length=10) name = models.CharField(max_length=20) pwd = models.CharField(max_length=16)
注意,这里如果定义id的话,会提示错误,不能重复,因为Django在同步数据库的时候会自己产生一个自增变量id
运行 python manage.py syncdb 这里发现数据库中多了blog_hot的表
但是后来我发现有个字段长度写的不对,修改后重新运行上面命令,数据库没有更改
这里需要用 manage.py makemigrations 和manage.py migrate
3 操作
model对象保存和查询:
三种保存方式
1
2
3
上面三种方式都可以创建model并且存储
如果需要获取hot表的数据:
<pre name="code" class="python">from blog.models import hot# Create your views here.def post_list(req,title): hot1_user = hot.objects.all() #相当于select * from blog_hot#hot2_user = hot.objects.get(name='yang') #select * from blog_hot where name='yang' return render_to_response('index.html',{'user':hot1_user})
get是获取一个对象的,如果是获取满足条件的一部分呢对象的话:
hot3_user = hot.objects.filter(name='yang')
filter提供很多参数类型,需要的话可以查查hot4_user = hot.objects.exclude(name='yang') #排除
数据库查询结果是queryset集合 ,这是涉及到数据库接口api:
(1) 支持切片 hot.objects.all()[:10] 可以节省空间
(2)常用方法
.count 查询数量 .exists() 是否存在 len() 获取长度 list()强行变成列表 order_by()排序 reverse() 翻转
(3)链条查询
hot.objects.filter().filter() # 相当于and
hot.objects.filter().exclude()
(4) 获取queryset
hot_user= hot.objects.all()
hot_user[0]
5 model中一对多、多对多
一对多关系:相当于外键的设置
class Hot_info(models.Model): name = models.CharField(max_length=20) age = models.IntegerField() sex = models.CharField(max_length=5) def __unicode__(self): return self.nameclass family(models.Model): mother = models.CharField(max_length=20) father = models.CharField(max_length=20) hot_info = models.ForeignKey(Hot_info) def __unicode__(self): return self.mother,self.father多对多:
class Author(models.Model): name = models.CharField(max_length=30) def __unicode__(self): return self.nameclass Book(models.Model): name = models.CharField(max_length=30) authors = models.ManyToManyField(Author) def __unicode__(self): return self.name多对多操作:
0 0
- Django数据库操作笔记
- DJANGO中操作数据库
- DJANGO数据库操作
- Django数据库queryset操作
- Django 数据库操作
- Django 数据库的操作
- Django 数据库操作备忘
- Django 中的数据库操作
- Django 数据库操作
- django 数据库操作
- Django 数据库QuerySet操作
- DJANGO数据库操作
- django+python 操作数据库
- django操作数据库例子
- Django数据库操作
- django操作数据库
- Django 数据库操作
- django 的数据库操作
- JavaScript生成并下载csv文件
- iOS代码技巧之判断设备及状态
- 关于系统登录那件事
- Failure to transfer org.codehaus.plexus:plexus-io:pom:1.0,Failure to transfer org.codehaus.plexus:pl
- yum安装redis详解
- 【Django】数据库操作
- 深入理解JavaScript
- etcd:从应用场景到实现原理的全方位解读
- 9. Palindrome Number
- hog特征原理详解及matlab代码学习笔记
- liblinphone注册状态的变化
- 解决Fiddler "creation of the root certificate was not successful”的问题
- ExtJs (3.2.0)文件目录介绍、文件删减、文件引用
- jeecg <t:formvalid>标签提交前验证 beforeSubmit