Django+sqlite3数据库操作

1.新建project

django-admin.py startproject webui

2.新建app

python manage. py startapp app

init.py: 说明目录是一个python模块

models.py: 用于写和数据库项目的内容

views.py: 接收数据,处理数据,与M,T进行交互,返回应答

定义处理函数,视图函数 培养

tests.py: 测试代码的文件

admin.py: 网站后台管理相关的文件

建立应用和项目之间的联系,需要对应用进行注册。

修改settings.py中的INSTALLED_APPS配置项。

运行开发web服务器命令:

python manage.py runserver

3.setting设置

INSTALLED_APPS = [
‘app’,
]

**4.ORM **
django中内嵌了ORM框架,ORM框架可以将类和数据表进行对应起来,只需要通过类和对象就可以对数据表进行操作。

设计类:模型类。
模型类生成表
ORM另外一个作用:根据设计的类生成数据库中的表。
模型类设计
在应用models.py中设计模型类。
必须继承与models.Model类。

1)models.py文件内容

from __future__ import unicode_literals
from django.contrib import admin
from django.db import models

# Create your models here.

class User(models.Model):
    username = models.CharField(max_length=50)
    password = models.CharField(max_length=50)
    email = models.EmailField()

class UserAdmin(admin.ModelAdmin):
    list_display = ('username','password','email')

admin.site.register(User,UserAdmin)

# Create your models here.
class VrpServer(models.Model):
    ftp_ip = models.CharField(max_length= 15)
    ftp_port = models.IntegerField(default=21)
    ftp_user = models.CharField(max_length=50)
    ftp_password = models.CharField(max_length= 50)
    ftp_auto_upload = models.BooleanField()
    ftp_load_history = models.BooleanField()
    ftp_task_num = models.IntegerField(default=0)

    vrp_ip = models.CharField(max_length= 15)
    vrp_port = models.IntegerField(default=21)
    vrp_path = models.CharField(max_length=50)
    vrp_user = models.CharField(max_length= 50)
    vrp_password = models.CharField(max_length= 50)

    def toJSON(self):
        fields = []
        for field in self._meta.fields:
            fields.append(field.name)

        d = {}
        for attr in fields:
            d[attr] = getattr(self, attr)

        return d


toJSON是为了转json,不然会有报错
如:TypeError: ‘SomeModel’ object is not iterable

2)设置数据

def __set_vrp_server_setting(json):
    try:
        vrp_server = models.VrpServer.objects.get(id=1)
        vrp_server.ftp_ip = json.get('ftp_ip')
        vrp_server.ftp_port = json.get('ftp_port')
        vrp_server.ftp_user = json.get('ftp_user')
        vrp_server.ftp_password = json.get('ftp_password')
        vrp_server.ftp_auto_upload = json.get('ftp_auto_upload')
        vrp_server.ftp_load_history = json.get('ftp_load_history')

        vrp_server.vrp_ip = json.get('vrp_ip')
        vrp_server.vrp_port = json.get('vrp_port')
        vrp_server.vrp_path = json.get('vrp_path')
        vrp_server.vrp_user = json.get('vrp_user')
        vrp_server.vrp_password = json.get('vrp_password')
        vrp_server.save()
    except:
        vrp_server = models.VrpServer()
        vrp_server.ftp_ip = json.get('ftp_ip')
        vrp_server.ftp_port = json.get('ftp_port')
        vrp_server.ftp_user = json.get('ftp_user')
        vrp_server.ftp_password = json.get('ftp_password')
        vrp_server.ftp_auto_upload = False
        vrp_server.ftp_load_history = False
        vrp_server.ftp_task_num = 0

        vrp_server.vrp_ip = json.get('vrp_ip')
        vrp_server.vrp_port = json.get('vrp_port')
        vrp_server.vrp_path = json.get('vrp_path')
        vrp_server.vrp_user = json.get('vrp_user')
        vrp_server.vrp_password = json.get('vrp_password')
        vrp_server.save()

    return 0, "成功"

2)查询数据

def __get_vrp_setting():
    #vrp_setting = serializers.serialize('json',models.VrpServer.objects.get(id=1))
    vrp_setting = models.VrpServer.objects.get(id=1).toJSON()
    return  vrp_setting

5.模型类生成表
1) 生成迁移文件

命令:python manage.py makemigrations
迁移文件是根据模型类生成的。

2) 执行迁移生成表

命令:python mange.py migrate

根据迁移文件生成表。

生成表名的默认格式:应用名_模型类名小写

6.数据库操作
1)向booktest_bookinfo表中插入一条数据。

b = BookInfo() #定义一个BookInfo类的对象

b.btitle =‘天龙八部’ #定义b对象的属性并赋值

b.bpub_date = date(1990,10,11)

b.save() #才会将数据保存进数据库

2)查询出booktest_bookinfo表中id为1的数据。

b = BookInfo.objects.get(id=1)

3)在上一步的基础上改变b对应图书的出版日期。

b.bpub_date = date(1989,10,21)

b.save() #才会更新表格中的数据

4)紧接上一步,删除b对应的图书的数据。
models.CourseInfo.objects.all().delete()#删除全部数据

b.delete() #才会删除

5)向booktest_heroInfo表中插入一条数据。

h = HeroInfo()

h.hname = ‘郭靖’
h.hgender = False

h.hcomment = ‘降龙十八掌’

b2 = BookInfo.objects.get(id=2)

h.hbook = b2 #给关系属性赋值,英雄对象所属的图书对象

h.save()

6)查询图书表里面的所有内容。

BookInfo.objects.all()

HeroInfo.objects.all()

关系操作

1)查询出id为2的图书中所有英雄人物的信息。

b = BookInfo.objects.get(id=2)

b.heroinfo_set.all() #查询出b图书中所有英雄人物的信息
数据库操作参考链接

你可能感兴趣的:(python)