Django 数据库操作

370 阅读2分钟

这是我参与8月更文挑战的第5天,活动详情查看:8月更文挑战

创建工程

创建myproject工程项目:

django-admin.py startproject myproject

manage.py ----- Django项目里面的工具,通过它可以调用django shell和数据库等。

settings.py ---- 包含了项目的默认设置,包括数据库信息,调试标志以及其他一些工作的变量。

urls.py ----- 负责把URL模式映射到应用程序。

创建项目

python manage.py startapp test

数据库操作

初始化数据库:

python 自带SQLite数据库,Django支持各种主流的数据库,这里我们首先使用MySQL,如果使用其它数据库请在settings.py文件中设置。数据库默认的配置为:

DATABASES={
    'default': {
        'ENGINE': 'django_prometheus.db.backends.mysql',
        'NAME': 'testdb',
        'USER': 'test',
        'PASSWORD': 'test',
        'HOST': '127.0.0.1',
        'PORT': '3306',
        'OPTIONS': {
            'init_command': 'SET foreign_key_checks = 0;',
            'charset': 'utf8',
            'read_timeout': 1000,
        },
        # 'CONN_MAX_AGE': 1800,
    }
 }

在mysql数据中创建一个testdb的数据库,然后在myproject/init.py文件中加入以下代码:

import pymysql

pymysql.install_as_MySQLdb()

使用默认的数据配置来初始化数据库:

python manage.py makemigrations
python manage.py migrate

Django自带有一个ADMIN 后台,下面创建ADMIN后台的用户名与密码:

python manage.py createsuperuser

下面访问django的 ADMIN 后台:http://127.0.0.1/admin

创建一张User表,并创建字段:

现在我们打开test目录下的models.py文件,这是我们定义test数据结构的地方。打开myproject/test/models.py 文件进行修改:

from django.db import models

class User(models.Model):
  username = models.CharField(max_length=45, blank=True, null=True, help_text="姓名")
  password = models.CharField(max_length=45, blank=True, null=True, help_text="密码")
  age = models.IntegerField(blank=True, null=True, help_text="性别")

执行命令:

python manage.py makemigrations
python manage.py migrate

通过字典的格式来创建表数据

def db_handle(request):
    # models.User.objects.create(username='test1',password='123456',age=33)
    dic = {"username":"test2","password":"123456","age":23}
    models.User.objects.create(**dic)
    return HttpResponse('OK')

下面我们配置路由,以便让浏览器能够访问到views.py文件:

from django.conf.urls import url
from django.contrib import admin

from test import views

urlpatterns = [
  url(r'^admin/', admin.site.urls),
  url(r'^db_handle', views.db_handle),
]

删除表数据:

from django.shortcuts import render
from test import models
from django.shortcuts import HttpResponse
def db_handle(request):
    # models.User.objects.create(username='test1',password='123456',age=33)
    # dic = {"username":"test2","password":"123456","age":23}
    # models.User.objects.create(**dic)
    models.User.objects.filter(id=2).delete()
    return HttpResponse('OK')

修改表数据:

from django.shortcuts import render
from test import models
from django.shortcuts import HttpResponse
def db_handle(request):
    # models.User.objects.create(username='test1',password='123456',age=33)
    # dic = {"username":"test2","password":"123456","age":23}
    # models.User.objects.create(**dic)
    # models.User.objects.filter(id=2).delete()
    models.User.objects.filter(id=1).update(age=18)
    return HttpResponse('OK')

查询表数据:

from django.shortcuts import render
from test import models
from django.shortcuts import HttpResponse
def db_handle(request):
    # models.User.objects.create(username='test1',password='123456',age=33)
    # dic = {"username":"test2","password":"123456","age":23}
    # models.User.objects.create(**dic)
    # models.User.objects.filter(id=2).delete()
    # models.User.objects.filter(id=1).update(age=18)
    res = models.User.objects.all()
    return HttpResponse(res)