第一步:要先创建数据库(orm是不能创建数据库的)

第二步:settings里面指定连接到哪个数据库

DATABASES = {
#默认使用的是sqlite3数据库
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
#指定使用Mysql数据库
# 'default':{
# 'ENGINE':'django.db.backends.mysql',
# 'HOST':'127.0.0.1',
# 'PORT':3306,
# 'USER':'root',
# 'PASSWORD':'root',
# 'NAME':'userinfo', #指定到那个数据库(数据库要事先建好)
#
# }
}

上面的NAME就是指定的数据库的名字

第三步:在app文件夹下面的init.py里面配置

#因为操作msq数据库默认是用Mysqldb,现在就是手动指定用pymsql来操作数据库:
import pymysql
pymysql.install_as_MySQLdb()

第四步:在models里定义类,类必须继承 models.Model,写属性,对应着数据库的字段

#指定数据库表都有哪些字段及字段的属性
from django.db import models # Create your models here. class UserInfo(models.Model):
nid = models.AutoField(primary_key=True) #是否设置为主键
name = models.CharField(max_length=32)
# password = models.CharField(max_length=32,default='nicai') #可以指定默认值
password = models.CharField(max_length=32,)
gender = models.IntegerField()
birthday = models.DateField() def __str__(self):
return self.name

第五步:迁移数据库(makemigrations是生成一个文件,migrate是将更改提交到数据量)

  方式一:

  执行 python manage.py makemigrations(相当于做一个记录)

  

  

  执行 pyhton manage.py migrate (把前面创建的表的字段执行到数据库中)

  

   

  对应settings里面添加的app自动会有相对应的数据表(创建好的表的名字=aap名字+models.py里面定义的class类的名字)

  

  

  方式一:通过pycharm软件点击

    

第六步:views.py拿网页数据并将录入到数据库指定表的字段里面

from django.shortcuts import render,HttpResponse

# Create your views here.

from app01.models import *

#通过网页注册,拿到用户的数据信息,完成注册
def register(request):
if request.method == "POST":
name=request.POST.get('name',None)
password=request.POST.get('password',None)
gender=request.POST.get('gender',None)
birthday=request.POST.get('birthday',None) #实例化models.py里面的UserInfo类,传入上面从Web提交过来的数据,将数据写入数据库
user=UserInfo.objects.create(birthday=birthday,name=name,password=password,gender=gender)
print(user) #UserInfo object 是个对象
print(user.__dict__) #{'_state': <django.db.models.base.ModelState object at 0x05482290>, 'nid': 4, 'name': 'b', 'password': 'b', 'gender': '5', 'birthday': '1992-03-28'} return HttpResponse('注册成功') return render(request,'register.html') #查看表的内容
def user_list(request):
user_list=UserInfo.objects.all()
print(user_list) #<QuerySet [<UserInfo: yangzhizong>, <UserInfo: 杨智宗>]> QuerySet:即结果集
print(type(user_list)) #<class 'django.db.models.query.QuerySet'>
print(user_list[1].name) #yangzhizong 可以依次取出输入的name值 return render(request,'user_list.html',{'user_list':user_list})

第七步:更新表的时候就要执行下这2条命令:makemigrations 和 make (每次都会有记录,不能删除)

取出数据库中每条所有的用户的信息,相当于一个对象 列表对象里  放了一堆对象

 

 第八步:查询表时也可以一对一,多对多查询(待完善。。)

Django创建并连接数据库(实现增删改查)--ORM框架雏形的更多相关文章

  1. 【黑马Android】(04)数据库的创建和sql语句增删改查/LinearLayout展示列表数据/ListView的使用和BaseAdater/内容提供者创建

    数据库的创建和sql语句增删改查 1. 载入驱动. 2. 连接数据库. 3. 操作数据库. 创建表: create table person( _id integer primary key, nam ...

  2. 数据库开发基础-SQl Server 控制数据库的服务+数据库的创建与管理(增删改查)

    控制数据库的服务: 方法一: 1.Windows+R 打开运行  打开cmd 2.输入net start MSSQLserver 启动数据库服务 输入net stop MSSQLserver 关闭数据 ...

  3. 使用MVC5+Entity Framework6的Code First模式创建数据库并实现增删改查功能

    此处采用VS2017+SqlServer数据库 一.创建项目并引用dll: 1.创建一个MVC项目 2.采用Nuget安装EF6.1.3 二.创建Model 在models文件夹中,建立相应的mode ...

  4. BitAdminCore框架应用篇:(二)创建一个简单的增删改查模块

    NET Core应用框架之BitAdminCore框架应用篇系列 框架演示:http://bit.bitdao.cn 框架源码:https://github.com/chenyinxin/cookie ...

  5. 数据库开发基础-★SQl Server 控制数据库的服务+数据库的创建与管理(增删改查)★

    控制数据库的服务: 方法一: 1.Windows+R 打开运行  打开cmd 2.输入net start MSSQLserver 启动数据库服务 输入net stop MSSQLserver 关闭数据 ...

  6. Django之model基础(增删改查)

    一.ORM 映射关系 表名 <-------> 类名 字段 <-------> 属性 表记录 <------->类实例对象二.创建表(建立模型) 在创建表之前的准备 ...

  7. Django中多表的增删改查操作及聚合查询、F、Q查询

    一.创建表 创建四个表:书籍,出版社,作者,作者详细信息 四个表之间关系:书籍和作者多对多,作者和作者详细信息一对一,出版社和书籍一对多 创建一对一的关系:OneToOne("要绑定关系的表 ...

  8. Django REST framework 五种增删改查方法

    Django-DRF-视图的演变   版本一(基于类视图APIView类) views.py: APIView是继承的Django View视图的. 1 from .serializers impor ...

  9. linq的创建 和 数据的增删改查

    1.linq创建之前,一定要在sql做好数据表的主外键关系. 2.linq文件是以.dbml结尾,一般一个数据库的名字就是一个linq的名字 3,以实例来演示增删改查 数据库的名字为linq,里面有两 ...

  10. 利用SQLiteOpenHelper创建数据库,进行增删改查操作

    Android中提供SQLiteOpenHelper类,在该类的构造器中,调用Context中的方法创建并打开一个指定名称的数据库对象.继承和扩展SQLiteOpenHelper类主要做的工作就是重写 ...

随机推荐

  1. Python3+Selenium3+webdriver学习笔记13(js操作应用:弹出框无效如何处理)

    #!/usr/bin/env python# -*- coding:utf-8 -*-'''Selenium3+webdriver学习笔记13(js操作应用:弹出框无效如何处理)'''from sel ...

  2. python之元组,列表和字典的区别

    Python语言包含6种内建的序列,其中,有两种主要的类型:列表和元组. 列表是可以修改的,而元组不可以,如果要添加或者删除某些元素,就只能用列表,为了限制某些元素,就会用到元组.一般来说,列表可以替 ...

  3. BZOJ 4896 :[Thu Summer Camp2016]补退选 Trie树+Vector

    4896: [Thu Summer Camp2016]补退选 Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 315  Solved: 97[Submi ...

  4. External Pricing in C4C and ERP

    从下图可以看出,C4C的Opportunity,Sales Quote和Sales Order这些business transaction没有自己的pricing engine,使用的是在ERP Pr ...

  5. FreeRTOS_事件标志组

    FreeRTOS事件标志组 事件标志组简介 1. 事件位(事件标志) 事件位用于表明某个事件是否发生,事件位通常用作事件标志,比如下面的几个例子: 当收到一条消息并且把这条消息处理掉以后就可以将某个位 ...

  6. jQuery工作中遇到的几个插件

    图片上传插件:uploadify 表单验证插件:formValidator

  7. TextView中使用Linkify添加超链接

       首先,在TextView所属xml配置文件中,直接添加android:autoLink特性即可,它支持一个或多个(用分割线)自定义的值:none.web.email.phone或all. 另外, ...

  8. ubuntu下安装eclipse<转>

    转载自http://my.oschina.net/u/1407116/blog/227084      http://my.oschina.net/u/1407116/blog/227087 一 JD ...

  9. python_107_ __metaclass__ 元类

    类默认是由 type 类实例化产生,type类中如何实现的创建类?类又是如何创建对象? 答:类中有一个属性 __metaclass__,其用来表示该类由 谁 来实例化创建,所以,我们可以为 __met ...

  10. python_99_面向对象多态

    #多态:一种接口,多种实现.主要作用:实现接口重用 #方法1: class Animal(object): def __init__(self,name): self.name=name class ...