Django 模型(数据库):

来源:互联网 发布:知柏地黄丸哪家好 编辑:程序博客网 时间:2024/05/29 02:49
Django 模型(数据库):Django模型是与数据库相关的,与数据库相关的代码一般写在models.py中,Django支持sqlite3,MySQL,PostgreSQL等数据库,1.新建项目和应用django-admin.py startproject learn_models # 新建一个项目node2:/app#django-admin.py startproject learn_models node2:/app#cd learn_models # 进入到该项目的文件夹node2:/app/learn_models#django-admin.py startapp peoplenode2:/app/learn_models#django-admin.py startapp people # 新建一个 people 应用(app)node2:/app/learn_models#lslearn_models  manage.py  people补充:新建app也可以用 python manage.py startapp people, 需要指出的是,django-admin.py是安装Django后多处的一个命令,并不是运行的当前目录下的django-admin.py(当前目录下也没有),但创建项目会生成一个 manage.py 文件。2.将我们新建的应用(peolple)添加到settings.py中的INSTALLED_APPS中,也就是告诉Django有这么一个应用:INSTALLED_APPS = (    'django.contrib.admin',    'django.contrib.auth',    'django.contrib.contenttypes',    'django.contrib.sessions',    'django.contrib.messages',    'django.contrib.staticfiles',     'people',)3.修改models.py我们打开people/models.py 文件,修改其中的代码如下:from django.db import models  class Person(models.Model):    name = models.CharField(max_length=30)    age = models.IntegerField()我们新建了一个Person类,继承自models.Model,一个人有姓名和年龄这里用到了两种Field,更多Field4. 创建数据库我们来同步一下数据库(我们使用默认的数据库 SQLite3,无需配置)先 cd 进入 manage.py 所在的那个文件夹下,输入下面的命令 # Django 1.6.x 及以下python manage.py syncdb # Django 1.7 及以上的版本需要用以下命令python manage.py makemigrationspython manage.py migratenode2:/app/learn_models#python manage.py migrateOperations to perform:  Apply all migrations: admin, auth, contenttypes, sessionsRunning migrations:  Applying contenttypes.0001_initial... OK  Applying auth.0001_initial... OK  Applying admin.0001_initial... OK  Applying admin.0002_logentry_remove_auto_add... OK  Applying contenttypes.0002_remove_content_type_name... OK  Applying auth.0002_alter_permission_name_max_length... OK  Applying auth.0003_alter_user_email_max_length... OK  Applying auth.0004_alter_user_username_opts... OK  Applying auth.0005_alter_user_last_login_null... OK  Applying auth.0006_require_contenttypes_0002... OK  Applying auth.0007_alter_validators_add_error_messages... OK  Applying auth.0008_alter_user_username_max_length... OK  Applying sessions.0001_initial... OKnode2:/app/learn_models#node2:/app/learn_models#python manage.py makemigrationsMigrations for 'people':  people/migrations/0001_initial.py    - Create model Personnode2:/app/learn_models#python manage.py migrateOperations to perform:  Apply all migrations: admin, auth, contenttypes, people, sessionsRunning migrations:  Applying people.0001_initial... OKnode2:/app/learn_models#Running migrations:  Applying people.0001_initial... OK我们会看到,Django 生成了一系列的表,也生成了我们新建的people_person这个表,表示如何使用这个表呢?5.使用 Django 提供的 QuerySet APIDjango 提供了丰富的API,下面演示如何使用它:learn_models  manage.py  peoplenode2:/app/learn_models#(InteractiveConsole)>>> from people.models import Person>>> Person.objects.create(name="WeizhongTu", age=24)<Person: Person object>>>> mysql> select * from people_person;+----+------------+-----+| id | name       | age |+----+------------+-----+|  1 | WeizhongTu |  24 |+----+------------+-----+1 row in set (0.00 sec)我们新建了一个用户weizhongTu那么如何从数据库查询到它呢?我们用一个.objects.get() 方法查询出来符合条件的对象,但是大家注意到了没有,查询结果中显示<Person: Person object>,这里并没有显示出与WeizhongTu的相关信息,如果用户多了就无法知道查询出来的到底是谁,查询结果是否正确>>> from people.models import Person>>> Person.objects.get(name="WeizhongTu")<Person: WeizhongTu>新建一个对象的方法有以下几种:1.Person.objects.create(name=name,age=age)>>> Person.objects.get_or_create(name="WZT", age=23)(<Person: WZT>, True)这种方法是防止重复很好的方法,但是速度要相对慢些,返回一个元组,第一个为Person对象,第二个为True或False,新建时返回的是True,已经存在时返回False>>> Person.objects.get_or_create(name="WZT", age=23)(<Person: WZT>, True)>>> Person.objects.get_or_create(name="WZT", age=23)(<Person: WZT>, False)

阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 崔英道 崔荣宰 崔荣达 崔莺莺 一唱裙钗女唱的是崔莺莺 崔菲菲 崔菲菲死状照片 崔读音 崔的读音 崔怎么读音 崔读音是什么 崔贞媛 崔贞媛近况 崔贤珠 崔贵妃 了不起的崔贵妃 你欠钱l 崔走召新书 跳大神 崔走召 崔钟训 崔锡恩 崔阿扎 崔阿扎个人资料 崔阿扎资料 yy小梵睡过崔阿扎吗 崔雅涵 崔雪丽 陈震东 震东 何震东 连震东 崔韩率 崔顺实 崔龙喜紫砂壶价格 崖下库 洪崖洞离哪个高铁站近 洪崖洞在哪个轻轨站下 三亚市崖州区 崖州志下载 100万元以上崖柏图片 真假崖柏图片对比分析 崖柏市场