求助,django1.2.1,redis操作 数据库更新新操作

请输入正确的邮箱
已有帐号请点击
帐号创建成功!
我们刚刚给你发送了一封验证邮件
请在48小时内查收邮件,并按照提示验证邮箱
感谢你对微口网的信任与支持
如果你没有收到邮件,请留意垃圾箱 或 重新发送
你输入的邮箱还未注册
还没有帐号请点击
你输入的邮箱还未注册
又想起来了?
邮件发送成功!
我们刚刚给你发送了一封邮件
请在5分钟内查收邮件,并按照提示重置密码
感谢你对微口网的信任与支持
如果你没有收到邮件,请留意垃圾箱 或 重新发送
对不起,你的帐号尚未验证
如果你没有收到邮件,请留意垃圾箱 或
意见与建议
请留下您的联系方式
* 留下您正确的联系方式,以便工作人员尽快与你取得联系
Django数据库(二)
Django数据库(二)Django进行MySQL数据库操作的核心要点Models4 19, 2016 by&周勇  model中代码解释?12345678910111213models.Model&&&&&&& #models.Model父类提供我们与关系型数据库通讯,同时允许我们类属性通过具体类字段&&&&字段功能:说明数据怎样存储在数据库中,操作的数据Python数据类型,提交时候怎么去验证数据,怎么去展示数据。模块和字段都是类&&&CharField&& #CharField表示字符串类型因为MySQL中Charfield会变成varchar,需要max_length选项SlugField&& #SlugField实质是具有验证的CharField,会对字符串进行验证,只能包含小写字母与斜杠,TextField&& #TextField对应数据库中的text,没有字符长度限制DateField&& #DateField数据实质上是datetime.date对象,可以在DateField字段运用datetime.date对象方法。MySQL存储类型是date类型EmaiField&& #实质上是CharField,多了邮箱验证URLField&&& #实质上是CharField,多了URL验证&#多对一关系具有方向外键需要放在多的一边;多对对关系没有方向,两边是平等的。?123456789#用字段选项控制字段行为unique&&&&&&&&&&&&& #经常用来指定某个值唯一help_text&&&&&&&&&& #使用表单的时候,help_text用于提示某个字段是干什么的verbose_name&&&&&&& #提供字段全名在表单中能看到效果,第一个未命名的参数或用显示的命名db_index&&&&&&&&&&& #创造数据库索引用字段unique_for_month&&& #不会允许在同一个月有相同的slugauto_now_add&&&&&&& #自动添加当前的时间auto_now3&&&&&&&&&& #自动更新每次修改时的时间related_name&&&&&&& #重新指定多对多关系访问方式索引是对数据库表中一个或多个列(例如,employee 表的姓名 (name) 列)的值进行排序的结构。如果想按特定职员的姓来查找他或她,则与在表中搜索所有的行相比,索引有助于更快地获取信息。&例如这样一个查询:select * from table1 where id=10000。如果没有索引,必须遍历整个表,直到ID等于10000的这一行被找到为止;有了索引之后(必须是在ID这一列上建立的索引),即可在索引中查找。由于索引是经过某种算法优化过的,因而查找次数要少的多。可见,索引是用来定位的。&多对多关关系是一种对等的关系,我在Post中使用了多对多关系。但是我们没有在Tag中使用多对多关系,在Django中我们只需要在一边说明这种对等关系就行了。&使用p.tags通过Post实例访问Tag,们需要通过Tag实例实例访问Post,必须写成t.post_set。如果定义了related_name,我们只需要t.related_name?123#在model里面添加方法实例显示方法__str__&&&&&&&&&&&& #python 3__unicode__&&&&&&&& #Python 2.7?123#扩展strftime&&&&&&&&&&& #处理时间对象方法,将时间对象转换成字符串,d.strftime(格式)strptime&&&&&&&&&&& #datetime的类方法将字符串转换为时间,datetime.strptime(d_str,format)?1234#用Meta类控制model行为ordering&&&&&&&&&&& #按照某个字段排序get_latest_by&&&&&& #获取最新的内容verbose_name&&&&&&& #自定义类的显示名&&&&&&&&& ?1234#创建数据库表manage.py check&&&&&&&&&&&& manage.py makemigrations&&& manage.py migrateDjango数据库查询?123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167manage.py shell&&&&&&&&&&&&&&&&&&&&&&&& #打开Django环境下shell&#导入model&&&&& &&& from datetime import date&&& from organizer.models import *&&& from blog.models import *&#创建、保存、删除数据&&& educt = Tag(name='Education',slug='education')&&& educt&tag: education=&&&&&& educt.save()&&& educt.delete()&#每一个model都有Manager对象,用于数据交互&&& type(Tag.objects)&class 'django.db.models.manager.manager'=&&&&#创建单个数据和多个数据&&& Tag.objects.create(name='Video Games',slug='video-games')&&& Tag.objects.bulk_create([\...&&&&&&&&&&&&&&&&&&&&&&&&& Tag(name='Django', slug='django'),...&&&&&&&&&&&&&&&&&&&&&&&&& Tag(name='Mobile', slug='mobile'),...&&&&&&&&&&&&&&&&&&&&&&&&& Tag(name='Web', slug='web'),...&&&&&&&&&&&&&&&&&&&&&&&&& ])... &#all查询所有数据&&& Tag.objects.all()[&tag: django=&&&, &tag: mobile=&&&, &tag: video=&& games=&&&, &tag: web=&&&]&&& Tag.objects.all()[0]&tag: django=&&&&#Manger属性只能通过model类访问&&& try:...&&&& educt.objects... except AttributeError as e:...&&&& print e...&&&& Manager isn't accessible via Tag instances&#统计数据条数&&& Tag.objects.count()4&#get只能筛选一条数据&&& Tag.objects.get(slug='django')&tag: django=&&&&&& try:...&&&& Tag.objects.get(slug__icontains='o')... except Tag.MultipleObjectsReturned as e:...&&&& print e...&&&& get() returned more than one Tag -- it returned 3!&#get筛选是类对象,其它的筛选都是QuerySet类型&&& type(Tag.objects.all())&class 'django.db.models.query.queryset'=&&&&&& type(Tag.objects.get(slug='django'))&class 'organizer.models.tag'=&&&&#有条件筛选&&& Tag.objects.get(slug__icontains='an')&tag: django=&&&&&& Tag.objects.get(slug__istartswith='DJ')&tag: django=&&&&&& Tag.objects.get(slug__iendswith='GO')&tag: django=&&&&&& Tag.objects.get(slug__iexact='DJANGO')&tag: django=&&&&#filter筛选&&& Tag.objects.filter(slug__icontains='O')[&tag: django=&&&, &tag: mobile=&&&, &tag: video=&& games=&&&]&&& Tag.objects.filter(slug__icontains='O').order_by('name')[&tag: django=&&&, &tag: mobile=&&&, &tag: video=&& games=&&&]&&& Tag.objects.filter(slug__icontains='O').order_by('-name')[&tag: video=&& games=&&&, &tag: mobile=&&&, &tag: django=&&&]&#values_list显示值列表,flat只能用于显示一个字段的值。还是QuerySet类型&&& Tag.objects.values_list()[(3L, u'Django', u'django'), (4L, u'Mobile', u'mobile'), (2L, u'Video Games', u'video-games'), (5L, u'Web', u'web')]&&& Tag.objects.values_list('name','slug')[(u'Django', u'django'), (u'Mobile', u'mobile'), (u'Video Games', u'video-games'), (u'Web', u'web')]&&& Tag.objects.values_list('name')[(u'Django',), (u'Mobile',), (u'Video Games',), (u'Web',)]&&& Tag.objects.values_list('name',flat=True)[u'Django', u'Mobile', u'Video Games', u'Web']&&& type(Tag.objects.values_list('name',flat=True))&class 'django.db.models.query.valueslistqueryset'=&&&&&&& jb=Startup.objects.create(...&&&&&&&&&&&&&&&&&&&&&&&&&& name='JamBon Software',...&&&&&&&&&&&&&&&&&&&&&&&&&& slug='jambon-software',...&&&&&&&&&&&&&&&&&&&&&&&&&& contact='',...&&&&&&&&&&&&&&&&&&&&&&&&&& description='Web and Mobile Consulting.\n\n'...&&&&&&&&&&&&&&&&&&&&&&&&&& 'Django Tutoring.\n',...&&&&&&&&&&&&&&&&&&&&&&&&&& founded_date=date(2013, 1, 18),...&&&&&&&&&&&&&&&&&&&&&&&&&& websit='/',...&&&&&&&&&&&&&&&&&&&&&&&&&& )... &&& jb&startup: jambon=&& software=&&&&#修改时间&&& jb.founded_date = date(2016,4,19)&&& jb.founded_datedatetime.date(2016, 4, 19)&&&& Startup.objects.get(slug='jambon-software')&startup: jambon=&& software=&&&&&& jb = Startup.objects.get(slug='jambon-software')&&& jb.founded_datedatetime.date(2013, 1, 18)&&&& djt = Post.objects.create(...&&&&&&&&&&&&&&&&&&&&&&&&&& title='Django Training',...&&&&&&&&&&&&&&&&&&&&&&&&&& slug='django-training',...&&&&&&&&&&&&&&&&&&&&&&&&&& text=(...&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &Learn Django in a classroom setting &...&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &with JamBon Software.&),...&&&&&&&&&&&&&&&&&&&&&&&&&& )... &&& djt.pub_datedatetime.date(2016, 4, 19)&&& djt&post: django=&& training=&& on=&& =&&&&&& djt.pub_date = date(2013, 1, 18)&&& djt.save()&&& djt&post: django=&& training=&& on=&& =&&&&&&& type(djt.tag)&class 'django.db.models.fields.related.manyrelatedmanager'=&&&&&& type(djt.startup)&class 'django.db.models.fields.related.manyrelatedmanager'=&&&&#Post实例访问tag和startup&&& djt.tag.all()[]&&& djt.startup.all()[]&#为Post对象添加Tag对象&&& django = Tag.objects.get(slug='django')&&& djt.tag.add(django)&&& djt.tag.all()[&tag: django=&&&]&#通过Tag实例访问Post对象&&& django.blog_posts.all()[&post: django=&& training=&& on=&& =&&&]&#通过Tag实例访问Startup对象&&& django.startup_set.add(jb)&&& django.startup_set.all()[&startup: jambon=&& software=&&&]&&& jb.tags.all()[&tag: django=&&&]&#Post实例添加Startup实例&&& djt.startup.add(jb)&&& jb.blog_posts.all()[&post: django=&& training=&& on=&& =&&&]&&& djt.startup.all()[&startup: jambon=&& software=&&&]&/startup:&&/post:&&/tag:&&/startup:&&/post:&&/tag:&&/class&&/class&&/post:&&/post:&&/startup:&&/startup:&&/class&&/tag:&&/tag:&&/tag:&&/tag:&&/tag:&&/tag:&&/tag:&&/tag:&&/tag:&&/tag:&&/tag:&&/tag:&&/tag:&&/class&&/class&&/tag:&&/tag:&&/tag:&&/tag:&&/tag:&&/tag:&&/class&&/tag:&Django数据库排序?1234567891011from organizer.models import *&Tag.objects.values_list('name','slug').order_by('name')[(u'django', u'django'), (u'mobile', u'mobile'), (u'video games', u'video-games'), (u'web', u'web')]&for tag in Tag.objects.all():&&&&tag.name = tag.name.title()&&&&tag.save()&&&&&Tag.objects.values_list('name','slug').order_by('name')[(u'Django', u'django'), (u'Mobile', u'mobile'), (u'Video Games', u'video-games'), (u'Web', u'web')]
15人赞过此文
浏览器扫一扫
分享到朋友圈
社会化媒体
了解更多>>
桂ICP备 号-1
桂公网安备 36号
阅读下一篇
Django进行MySQL数据库操作的核心要点
Hi,看起来你很喜欢这些内容,但是你还没有登录!在你登录以后,就可以收藏感兴趣的内容,关注感兴趣的作者!django 简单显示数据库的内容 - 开源中国社区
当前访客身份:游客 [
当前位置:
发布于 日 9时,
&无详细内容&
代码片段(2)
1.&[代码]views.py&&&&
from django.http import HttpResponse
import os,sys
sys.path.insert(0,os.path.abspath(os.curdir))
import sqlite3
import settings
from ms.models import Student
from django.shortcuts import HttpResponseRedirect,Http404,HttpResponse,render_to_response
def archive(request):
names = Student.objects.all()
return render_to_response("index.html",locals())
2.&[代码]index.html&&&&
&html lang="en"&
&meta charset="UTF-8"&
&title&Upload Successfully&/title&
&p&所在城市&/p&
{% for name in names %}
&p&{{name.city}}&/p&
&h2&1&/h2&
&p&{{name.name}}&/p&
{% endfor %}
开源中国-程序员在线工具:
开源从代码分享开始
寂寞的远行者的其它代码python环境
C:\Python27\Lib\site-packages&python --versionPython 2.7.5
安装setuptools
下载脚本:
python ez_setup.py
django环境
解压缩后进入目录:
python setup.py install
E:\&python
Python 2.7.5 (default, May 15 :36) [MSC v.1500 32 bit (Intel)] on win32
Type &help&, &copyright&, &credits& or &license& for more information.
&&& print django.get_version();
构建一个blog
python C:\Python27\Lib\site-packages\Django-1.7-py2.7.egg\django\bin\django-admin.py startproject mysite
ganiks.liu@MAMIS-GAIKS-LIU /E/mysite
-rwxr-xr-x
1 ganiks.l Administ
249 Sep 11 13:42 manage.py
drwxr-xr-x
1 ganiks.l Administ
0 Sep 11 14:13 mysite
ganiks.liu@MAMIS-GAIKS-LIU /E/mysite
$ ls -l mysite/
-rw-r--r--
1 ganiks.l Administ
0 Sep 11 13:42 __init__.py
-rw-r--r--
1 ganiks.l Administ
2042 Sep 11 13:42 settings.py
-rw-r--r--
1 ganiks.l Administ
275 Sep 11 13:42 urls.py
-rw-r--r--
1 ganiks.l Administ
387 Sep 11 13:42 wsgi.py
运行开发服务器
ganiks.liu@MAMIS-GAIKS-LIU /E/mysite
$ ./manage.py runserver
Performing system checks...
System check identified no issues (0 silenced).
September 11, 2014 - 14:22:59
Django version 1.7, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.
[11/Sep/:03] &GET / HTTP/1.1& 200 1759
创建blog app
ganiks.liu@MAMIS-GAIKS-LIU /E/mysite/mysite
$ ../manage.py startapp blog
ganiks.liu@MAMIS-GAIKS-LIU /E/mysite/mysite
$ gvim settings.py
ganiks.liu@MAMIS-GAIKS-LIU /E/mysite
-rw-r--r--
1 ganiks.l Administ
36864 Sep 11 15:04 db.sqlite3
-rwxr-xr-x
1 ganiks.l Administ
249 Sep 11 13:42 manage.py
-rw-r--r--
1 ganiks.l Administ
312 Sep 11 14:42 models.py
drwxr-xr-x
1 ganiks.l Administ
0 Sep 11 15:04 mysite
注意,这里是在mysite/mysite目录下执行的创建app操作,所以blog是mysite.blog
编辑mysite/settings.py, 添加mysite.blog
# Application definition
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'mysite.blog',
Django 采用 INSTALL_APPS 来决定系统不同部分的配置,包括自动化的admin应用以及测试框架
创建你的Model
from django.db import models
# Create your models here.
#django.db.models.Model is the core partof the ORM system of Django
class BlogPost(models.Model):
# Django will add an auto-increment, unique id
title = models.CharField(max_length=150)
body = models.TextField()
timestamp = models.DataTimeField()
设置数据库
使用SQLite
SQLite非常适合做测试,甚至可以部署在没有大量并发写入的情况下。因为SQLite使用本地文件系统作为存储介质并且用原生的文件系统权限来做访问限制。像主机、端口、用户和密码这些统统不需要了。
ganiks.liu@MAMIS-GAIKS-LIU /E/mysite
$ ./manage.py syncdb
Operations to perform:
Apply all migrations: admin, contenttypes, auth, sessions
Running migrations:
No migrations to apply.
Your models have changes that are not yet reflected in a migration, and so won't be applied.
Run 'manage.py makemigrations' to make new migrations, and then re-run 'manage.py migrate' to apply them.
You have installed Django's auth system, and don't have any superusers defined.
Would you like to create one now? (yes/no): yes
Username (leave blank to use 'ganiks.liu'): ganiks
Email address:
Password (again):
Superuser created successfully.
ganiks.liu@MAMIS-GAIKS-LIU /E/mysite
$ manage.py makemigrations
Migrations for 'blog':
0001_initial.py:
- Create model BlogPost
ganiks.liu@MAMIS-GAIKS-LIU /E/mysite
-rw-r--r--
1 ganiks.l Administ
36864 Sep 11 15:07 db.sqlite3
-rwxr-xr-x
1 ganiks.l Administ
249 Sep 11 13:42 manage.py
drwxr-xr-x
1 ganiks.l Administ
0 Sep 11 15:04 mysite
ganiks.liu@MAMIS-GAIKS-LIU /E/mysite
$ manage.py migrate
perations to perform:
Apply all migrations: admin, blog, contenttypes, auth, sessions
Running migrations:
Applying blog.0001_initial... OK
ganiks.liu@MAMIS-GAIKS-LIU /E/mysite$ ls -l
-rw-r--r--
1 ganiks.l Administ
37888 Sep 11 15:09 db.sqlite3
-rwxr-xr-x
1 ganiks.l Administ
249 Sep 11 13:42 manage.py
drwxr-xr-x
1 ganiks.l Administ
0 Sep 11 15:04 mysite
当执行syncdb命令时, Django会查找INSTALLED_APPS中的每一个models.py文件。并为每一个都创建一个数据库表(多对多关系会有例外)
另外刚刚的过程中还创建了一个超级用户,这个在后面加入Django的自动admin时很方便。
You have installed Django's auth system, and don't have any superusers defined.
Would you like to create one now? (yes/no): yes
Username (leave blank to use 'ganiks.liu'): ganiks
Email address:
Password (again):
Superuser created successfully.
设置自动admin应用:
自动化的后台应用程序admin可以说是Django“皇冠上的明珠”, 任何对为Web应用创建简单的CURD接口感到厌倦的人来说,这是极大的福音,类似Yii的Gii。
由于自动admin不是Django的必要组件,因此你先要在settings.py文件中指定,就跟你刚刚指定mysite.blog一样。但是呢,其实我这次用的 Django1.7 版本中默认的已经启用了如下app(我现在看的教程是老版本2008年的,这样可以发现好多Django的进化过程~)
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'mysite.blog',
还有 urls.py也都配置好了admin路由
from django.conf.urls import patterns, include, url
from django.contrib import admin
urlpatterns = patterns('',
# Examples:
# url(r'^$', 'mysite.views.home', name='home'),
# url(r'^blog/', include('blog.urls')),
url(r'^admin/', include(admin.site.urls)),
最后,你的应用程序要告诉Django要在admin窗口中显示哪一个model可以供编辑;要做到这一点,只要想默认的admin站点注册你的app model即可【添加1,添加2】
from django.db import models
from django.contrib import admin
# Create your models here.
#django.db.models.Model is the core partof the ORM system of Django
class BlogPost(models.Model):
# Django will add an auto-increment, unique id
title = models.CharField(max_length=150)
body = models.TextField()
timestamp = models.DateTimeField()
admin.site.register(BlogPost)
我的app(Blog posts)没有出现在 admin中的3个常见原因:
忘记向 admin.site.register注册你的model类
models.py有错误
忘记在settings.py中的INSTALLED_APPS中添加app
现在blog app已经创建完成,如何完善,参看下一篇。Django学习笔记(2)随时更新mysql数据库_MySQL_第七城市
Django学习笔记(2)随时更新mysql数据库
写这是为了记录自己曾经不知道的方法或经验,勿喷。在网上找了很多答案,发现很多都不是及时更新Django数据库操作的,因为刚写Django,随时要修改代码,所以必须随时更新数据库。你发现第二次用python manage.py syncdb时,根本不能随时更新数据库,它只是会提示你“xxx” already exist (xxx是数据库)。所以我决定用MySQL工具Navicat更新数据库,这样方便多了。怎么办呢?在你的项目里面找到setting.py文件,修改:DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'blog_db',#数据库名
'USER':'root',#数据库用户名
'PASSWORD':'student',#数据库密码
'HOST':'',#数据库主机,默认localhost
'PORT':'3306',#数据库端口
}}下载mysql,navicat工具。先启动mysql 然后终端进入mysql 启动Djangopython manage.py runserver 8001生成相应的数据库python manage.py syncdb在终端进入mysql 时,创建需要的数据库,不然会出错的。create database xxxx接着打开浏览器 127.0.0.1:8001/admin(我之前已写好配置代码) 现在到我们修改数据库时了!发现Blogs Posts里面有文章,修改时标签是 title,body,timestamp。 这3个便是我们数据库的成员:class BlogsPost(models.Model):
title=models.CharField(max_length=150)
body=models.TextField()
timestamp=models.DateTimeField()所以在Navicat,连接数据库:
所以这样,数据库列就可以直接在navi里面修改了。比如写这个BlogsPost类时,要添加或者修改时,你在代码里面直接修改你是不能成功的。所以在navi里面比如把timestamp改成time。 然后在到BlogsPost类里修改即可!。 看成功了!。
最新教程周点击榜
微信扫一扫对本页文档的理解、翻译的评价等等:
删除评论?
输入用户名、密码:
下次自动登录
注册用户可以上传自己的文档、查询自己的翻译历史等:

我要回帖

更多关于 django 更新数据库表 的文章

 

随机推荐