一,数据库连接

  创建类
    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. iSCSI网络协议.学习笔记

    Internet SCSI(iSCSI)是一种网络协议,使用TCP/IP网络来传输SCSI协议.它是代替FC(Fibre Channel-based,光纤通道) SAN的很好选择.你可以在Linux下 ...

  2. WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! --主机密钥验证失败

    1.错误出现在更换服务器操作系统后,使用ssh指令连接服务器时报错:ECDSA主机密钥发生改变,导致主机密钥验证失败! 2.解决方式一 使用指令:$ ssh-keygen -R  主机IP 如:$ s ...

  3. Expression的烦恼

    var tar = Expression.Label(typeof(int)); var p1=Expression.Parameter(typeof(int), "a"); va ...

  4. pipenv使用总结

    一.pipenv默认虚拟环境路径在用户目录下的.\virtualenvs下,不同虚拟环境目录不同,如果要更改为在当前项目根目录下,可以在项目根目录下手动创建.venv目录. 1.linux环境下设置环 ...

  5. ZZW原创_rsync同步时由于注释问题引起的@ERROR: chdir failed

    1.需求:A机器同步文件到B机器 2.问题: A机器执行如下命令: [root@sv0379 rsync]# rsync -vzrtopg  --password-file=/usr/local/rs ...

  6. PHP socket服务端与客户端的简易通信

    今天学习socket通信的同时,顺便整理了下以前初识socket的知识. 现在关于php的socket通信,有些框架已经十分成熟了,比如  swoole 和 workerman,这两个大家可以学习学习 ...

  7. 垃圾收集器(GC)

    堆分区:所有new的对象都会存放在堆中      > 新生代(Young Generation):存放生命周期短的对象,具体还分为Eden和Survivor两个区,其中Survivor分为Fro ...

  8. redis-cluster配置

    为什么要用redis-cluster 1.并发问题 redis官方生成可以达到 10万/每秒,每秒执行10万条命令假如业务需要每秒100万的命令执行呢? 2.数据量太大 一台服务器内存正常是16~25 ...

  9. AWK入门

    AWK类型    AWK:源于AT&T实验室的AWK    NAWK:AWK的升级版    GAWK:GNU AWK,兼容AWK和NAWK    程序结构    BEGIN语句块,可选     ...

  10. Linux安装64位Mysql5.7

    首先下载mysql 地址:https://dev.mysql.com/downloads/mysql/ 下载社区版mysql 下载完成后:ftp上传到服务器 /user/local/目录下,这个自己定 ...