文档章节

django part 1 ---models

terry_hding
 terry_hding
发布于 2015/07/10 22:17
字数 833
阅读 69
收藏 0
windows mysql 安装
首先到百度上下载 mysql-5.6.24
E:\paython学习\setup\mysql-5.6.24-win32\bin>mysqld -install
Service successfully installed.

E:\paython学习\setup\mysql-5.6.24-win32\bin>net start mysql
MySQL 服务正在启动 .........
MySQL 服务已经启动成功。


E:\paython学习\setup\mysql-5.6.24-win32\bin>mysql -uroot
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.6.24 MySQL Community Server (GPL)

Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> create database poll default charset utf8;
Query OK, 1 row affected (0.02 sec)

mysql>



建立python与mysql之间的联系
安装 MySQL-python-1.2.4b4.win32-py2.7.exe

在linux上也要安装这个驱动  yum install python-mysql



django 建立工程和应用
E:\paython学习\pycharm>django-admin startproject mysite

E:\paython学习\pycharm>cd mysite

E:\paython学习\pycharm\mysite>django-admin startapp polls



建好后再用pychram打开进行编辑和coding
mysite.settings.py

INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'polls',                                                               //增加polls应用
)

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',                             //更换数据库为mysql
        'NAME': 'poll',
        'HOST': '127.0.0.1',
        'USER': 'root',
        'PASSWORD': '',
        'PORT': '3306',
    }
}



建立models
from django.db import models
from django.utils import timezone
import datetime
# Create your models here.
class Question(models.Model):
    question_text = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date_published')

    def was_published_recently(self):
        return self.pub_date >= timezone.now() - datetime.timedelta(days=1)
    def __unicode__(self):
        return self.question_text

 class Choice(models.Model):
    question = models.ForeignKey(Question)
    choice_text = models.CharField(max_length=200)
    votes = models.IntegerField(default=0)

    def __unicode__(self):
        return self.choice_text



同步数据库
E:\paython学习\pycharm\mysite>python manage.py makemigrations polls              //建立迁移文件
Migrations for 'polls':
  0001_initial.py:
    - Create model Choice
    - Create model Question
    - Add field question to choice

E:\paython学习\pycharm\mysite>python manage.py migrate                           //迁移到数据库
Operations to perform:
  Synchronize unmigrated apps: staticfiles, messages
  Apply all migrations: admin, contenttypes, polls, auth, sessions
Synchronizing apps without migrations:
  Creating tables...
    Running deferred SQL...
  Installing custom SQL...
Running migrations:
  Rendering model states... DONE
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... 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 polls.0001_initial... OK
  Applying sessions.0001_initial... OK



在本地mysql上查看
mysql> show tables;
Empty set (0.00 sec)

mysql> show tables;
+----------------------------+
| Tables_in_poll             |
+----------------------------+
| auth_group                 |
| auth_group_permissions     |
| auth_permission            |
| auth_user                  |
| auth_user_groups           |
| auth_user_user_permissions |
| django_admin_log           |
| django_content_type        |
| django_migrations          |
| django_session             |
| polls_choice               |
| polls_question             |
+----------------------------+
12 rows in set (0.00 sec)

可见的确写到数据库中了



在数据库中的操作可以在shell中执行试验
E:\paython学习\pycharm\mysite>python manage.py shell
Python 2.7.3 (default, Apr 10 2012, 23:31:26) [MSC v.1500 32 bit (Intel)] on wi
32
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> from django.utils import timezone
>>> from polls.models import Question, Choice
>>> Question.objects.all()
[]
>>> from django.utils import timezone
>>> q = Question(question_text="what's new",pub_date=timezone.now())
>>> q.save()
>>> q.id
1L
>>> q.pub_date
datetime.datetime(2015, 7, 10, 13, 21, 21, 781000, tzinfo=<UTC>)
>>> q.question_text = "what's up"
>>> q.save()>>> Question.objects.all()
[<Question: what's up>]
>>> Question.objects.filter(id=1)
[<Question: what's up>]
>>> current_year = timezone.now().year
>>> Question.objects.get(pub_date__year=current_year)
<Question: what's up>
>>> q = Question.objects.get(pk=1)
>>> q
<Question: what's up>
>>> q.choice_set.all()
[]
>>> q.choice_set.create(choice_text='NOT much',votes=0)
<Choice: NOT much>
>>> q.choice_set.create(choice_text='the sky', votes=0)
<Choice: the sky>
>>> c = q.choice_set.create(choice_text='just hacking again',votes=0)
>>> c.question
<Question: what's up>
>>> q.choice_set.all()
[<Choice: NOT much>, <Choice: the sky>, <Choice: just hacking again>]
>>> q.choice_set.count
<bound method RelatedManager.count of <django.db.models.fields.related.RelatedM
nager object at 0x015F9030>>
>>> q.choice_set.count()
3
>>> c = q.choice_set.filter(choice_text__startswith='just hacking')
>>> c.delete()

这边介绍了几种模型的创建和选择的方法,之后在视图逻辑中都会用的到,如何把数据写入数据库,如何读等等

question是choice的外键

一个question有好多个choice

可以通过question来访问choice,也可以通过question来创建choice,因为他们之间有约束关系





© 著作权归作者所有

共有 人打赏支持
上一篇: django part2 --- admin
下一篇: Django windows 安装
terry_hding
粉丝 37
博文 133
码字总数 139248
作品 0
杨浦
QA/测试工程师
私信 提问
Python脚本之django---mysql-记录主机性能数据到数据库-web站点管理数据库及web显示命令执行结果

##############################################################环境 [root@LVS1 python]# cat /etc/redhat-release Red Hat Enterprise Linux Server release 6.4 (Santiago) You have ne......

shangshanyang
2017/09/16
0
0
Django中扩展User模型

官方其实是有资料的,不过在这里还是写的浅显点。 官方地址https://docs.djangoproject.com/en/dev/topics/auth/customizing/ 在实际开发过程中,django提供的user字段肯定是不够用的,比如用...

spider1983
2014/08/26
0
0
django 搭建blog

一,环境   1.Python   2.Django 二,安装   1.你的电脑没有Python? 不用多说了坑人的Windows,送你友情连接 www.baidu.com   2.Django安装,推荐先装个pip吧,easyinstall也可以,然后终端...

xxl714
2017/11/01
0
0
python django web 管理界面admin工具简单部署

环境: A、centos 5.6 x64 B、python 2.7 C、django 1.6 1、创建一个项目 #python django-admin.py startproject test01 2、创建一个视图 #vim views.py #-- coding: utf-8 -- from django.h......

我不是三爷
2016/07/15
0
0
django开发实战笔记-1-2017-03-19

Django 开发环境的搭建和创建 website工程 要开始 Django 开发,你需要从中掌握以下知识: 如何创建 Django 工程,并了解 Django 默认的工程目录结构 如何创建 Django APP 理解 Django 的MTV...

帅旗军
2017/03/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

分布式事务解决方案框架(LCN)

什么是XA接口 XA是一个分布式事务协议,由Tuxedo提出。XA中大致分为两部分:事务管理器和本地资源管理器。其中本地资源管理器往往由数据库实现,比如Oracle、DB2这些商业数据库都实现了XA接口...

群星纪元
19分钟前
2
0
linux 操作系统 常用命令和软件安装

1.系统时间更新 ntpdate time.windows.com 2.传送文件 rsync -av /home/data/a.dat -e ssh root@192.168.0.100:/home 3.传送文件夹 scp -r /home/data root@192.168.0.100:/home 4.JDK安装 ......

WJtiny
41分钟前
1
0
pg_lightool基于basebackup的单表恢复和块恢复

开源软件pg_lightool,实现了基于wal日志的块恢复。详情参见博客:https://my.oschina.net/lcc1990/blog/1931485。由于wal日志中FPW的不确定性,它不能作为一个数据库恢复的解决方案。目前对...

movead
49分钟前
2
0
对比剖析Swarm Kubernetes Marathon编排引擎

Docker Native Orchestration 基本结构 Docker Engine 1.12 集成了原生的编排引擎,用以替换了之前独立的Docker Swarm项目。Docker原生集群(Swarm)同时包括了(Docker Engine \/ Daemons)...

Linux就该这么学
50分钟前
2
0
Mybatis的结果集处理

此时我们已经可以把整段的SQL语句取出,但还并没有在数据库中去执行,我们可以先来分析一下配置文件中SQL语句执行后的结果集是如何处理的。 Mybatis会将结果集按照映射配置文件中定义的映射规...

算法之名
今天
27
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部