一,数据库连接

  创建类
    a. 在models.py中先写类
      from django.db import models

      # 表名是app01_userinfo
      class UserInfo(models.Model):
      # id列,自增,主键
      # 用户名列,字符串类型,指定长度
      username = models.CharField(max_length=32)
      password = models.CharField(max_length=64)

    b. 注册APP,settings中加入app名称

      INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'app01',
      ]

    c,选定数据库 用sqlite3还是mysql

      DATABASES = {

        'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME':'dbname',
        'USER': 'root',
        'PASSWORD': 'xxx',
        'HOST': '',
        'PORT': '',
       }
      }

    d. 执行命令,
      python manage.py makemigrations
      python manage.py migrate

     ********** 注意 ***********
    Django默认使用MySQLdb模块链接MySQL,也可安装mysqlclient,https://www.lfd.uci.edu/~gohlke/pythonlibs/#mysqlclient
    主动修改为pymysql,在project同名文件夹下的__init__文件中添加如下代码即可:
      import pymysql
      pymysql.install_as_MySQLdb()

二,数据库增删查改

models:

from django.db import models

# Create your models here.

class userinfo(models.Model):
username = models.CharField(max_length=32)
password = models.CharField(max_length=64) views: from cmbd import models
def orm(request): #创建 插入行
#第一种方法
# models.userinfo.objects.create(username="root",password=123)
#第二种方法
# dic = {"username":"eric","password":123}
# models.userinfo.objects.create(**dic)
#第三种方法
# obj = models.userinfo(username="alex",password=666)
# obj.save() #查询
#result = models.userinfo.objects.all() #返回结果是django内置类,相当于结果列表,查询所有
# result = models.userinfo.objects.filter(username="root",password='123') #按条件与查询,后面还可跟.first() .last() .count()第一个最后一个,共几个
# for row in result:
# print(row.id,row.username,row.password) #更新
# models.userinfo.objects.update(password=669) #更新所有列的密码
# models.userinfo.objects.filter(id=1).update(password=69) #按条件更新 #删除
# models.userinfo.objects.filter(id=2).delete() #删除id为2的行 return HttpResponse('ok')

三,修改表结构

modules中

from django.db import models
class userinfo(models.Model):
username = models.CharField(max_length=32)
password = models.CharField(max_length=60)
email = models.EmailField(max_length=60)
favior = models.CharField(max_length=12,null=True) 直接在上面修改max_length=12,加一行即一个字段,删除一行即删除这个字段,
然后 python manage makemigrations ;python manage migrate

四,字段,参数,元信息等,详见 http://www.cnblogs.com/wupeiqi/articles/5246483.html

		字段:  django中的 EmailFiled,DateTimeField等其实是django的限制,在mysql中还是字符串类型
字符串类型
数字
时间
二进制
自增(primary_key=True) 字段的参数:
null -> db是否可以为空
default -> 默认值
primary_key -> 主键
db_column -> 列名
db_index -> 索引
unique -> 唯一索引
unique_for_date ->
unique_for_month
unique_for_year
auto_now_add -> 创建时,自动生成时间,保持不变
auto_now -> 更新时间,更新时自动更新为当前时间 # obj = UserGroup.objects.filter(id=1).update(caption='CEO') 这种操作不支持,不会更新,更新时间,以下操作才支持
# obj = UserGroup.objects.filter(id=1).first()
# obj.caption = "CEO"
# obj.save() choices -> django admin中显示下拉框,避免连表查询
blank -> django admin是否可以为空
verbose_name -> django admin显示字段中文
editable -> django admin是否可以被编辑
error_messages -> 错误信息欠
help_text -> django admin提示
validators -> django form ,自定义错误信息(欠) 创建 Django 用户:python manage.py createsuperuser

  

choices 举例,在数据库中user_type_id存放的是数据 ,但是django后台是显示用户类型汉字

class userinfo(models.Model):
username = models.CharField(max_length=32)
password = models.CharField(max_length=60)
email = models.EmailField(max_length=60)
user_type_choice = (
(1,'超级用户'),
(2,'管理员'),
(3,'普通用户'),
)
user_type_id = models.IntegerField(choices=user_type_choice,default=3)

  

django操作数据库 ORM的更多相关文章

  1. django 操作数据库--orm(object relation mapping)---models

    思想 django为使用一种新的方式,即:关系对象映射(Object Relational Mapping,简称ORM). PHP:activerecord Java:Hibernate C#:Ent ...

  2. django之数据库orm

    一.数据库的配置 1 django默认支持sqlite,mysql, oracle,postgresql数据库. <1>sqlite django默认使用sqlite的数据库,默认自带sq ...

  3. Django之 数据库ORM

    一.ORM Django的 业务 少不了 跟数据库打交道,不然没有数据库保存一些数据将是一件很糟糕的事情.Django 对 数据库 支持原生的 SQL语句,但更好的对数据库支持,Django自己有一套 ...

  4. django操作非ORM创建的表

    问题:django的ORM怎么连接已存在的表,然后进行增删查改操作?     工作中会遇见很多二次开发的时候,表都是已经创建好的,用django的ORM进行二次开发,怎么操作数据库中的表呢? 下面介绍 ...

  5. 关于python+django操作数据库中的表

    数据库中的表示这样设计的 class C(models.Model): name = models.CharField(max_length=32) class B(models.Model): na ...

  6. django_4:数据库1——django操作数据库

    创建数据库记录(插入) 使用python3 manage.py shell(python3亲测好使) ipython3 manage.py shell(亲测不好使) 方式一. [root@centos ...

  7. Django之数据库--ORM

    一.建立数据库模型类 1.在model里创建模型类.(继承models.Model) from django.db import models # Create your models here. c ...

  8. 如何使用django操作数据库,向原有表中添加新的字段信息并建立一个多对多的关系?

    (注:本人用的pycharm开发工具) 1.在你要添加新字段的app的 models.py 文件中添加需要新增的字段(book表新增authors字段并和author建立多对多关系,author表新增 ...

  9. django操作数据库之查询F,Q操作 和 seach搜索功能

    # F 使用查询条件的值 # # from django.db.models import F # models.Tb1.objects.update(num=F('num')+1) # Q 构建搜索 ...

随机推荐

  1. 雷林鹏分享:jQuery EasyUI 数据网格 - 启用行内编辑

    jQuery EasyUI 数据网格 - 启用行内编辑 可编辑的功能是最近添加到数据网格(datagrid)的.它可以使用户添加一个新行到数据网格(datagrid).用户也可以更新一个或多个行. 本 ...

  2. Python自学:第三章 索引从0开始而不是从1

    #返回最后一个,和倒数第二个元素 bicycles = ['trek','cannondale','redline','specialized'] print(bicycles[-1]) print( ...

  3. unity中实现监听鼠标的进入和退出某一个UI按钮

    using UnityEngine; using System.Collections; using Assets.Code.myclass; using UnityEngine.UI; using ...

  4. css样式 + 特殊符号

    color控制字体颜色 十六进制值 #cc0066: font-size控制字体大小 单位 px / % / em / rem:像素 / 相对于父级元素 / 取决自己使用字体大小 / 取决于根元素ht ...

  5. kaptcha验证码插件使用与参数

    kaptcha使用1 kaptcha使用2 kaptcha使用3 kaptcha参数说明

  6. tensorFlow(三)逻辑回归

    tensorFlow 基础见前博客 逻辑回归广泛应用在各类分类,回归任务中.本实验介绍逻辑回归在 TensorFlow 上的实现 理论知识回顾 逻辑回归的主要公式罗列如下: 激活函数(activati ...

  7. Linux Nginx Web环境安装SSL证书后强行指向HTTPS方法

    如今我们越来越多的网站需要使用SSL证书,尤其是一些购物类网站,用户交互类网站使用居多.安装方法也很简单,我们可以根据自己的服务器是NGINX还是APACHE进行安装,但是在安装之后,默认的HTTP和 ...

  8. Ubuntu系统下安装免驱动摄像头

    最近想玩一下视频系列的深度学习模型,便网上淘了一个linux下免驱动的摄像头,直接插上usb接口就行,但是一般还不能直接使用,下面将简单说一下如何使用摄像头: 在你的ternimal下输入以下命令: ...

  9. 剑指Offer 49. 把字符串转换成整数 (字符串)

    题目描述 将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库函数. 数值为0或者字符串不是一 ...

  10. 使用Sublime Text 3进行Markdown 编辑+实时预览

    这种做法可能会对你的磁盘IO造成一小部分性能负担,但负面影响足以忽略. 另外,由于这种频率的读写会被磁盘缓存接管,不必担心磁盘寿命的影响. 对于刚安装好的Sublime Text,我们需要安装一个软件 ...