如目前项目名为:mysite,程序名为:app01
配置简单数据库操作,默认sqlite,咱们指定mysql数据库
(1)在mysite/settings.py文件下修改如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | '' ' 配置Mysql数据库 '' ' DATABASES = { 'default' : { 'ENGINE' : 'django.db.backends.mysql' , 'NAME' : 'test' , 'USER' : 'test' , 'PASSWORD' : 'test123' , 'HOST' : 'localhost' , 'PORT' : '3306' , }, } |
mysite/__init__.py下修改:
1 2 | import pymysql pymysql.install_as_MySQLdb() |
(2)在app01/models.py下设计数据库表,采用ORM方式
1 2 3 4 5 6 7 8 9 10 11 | from django.db import models # Create your models here. class User(models.Model): username = models.CharField( '用户名' , max_length=30) userpass = models.CharField( '密码' ,max_length=30) useremail = models.EmailField( '邮箱' ,max_length=30) usertype = models.CharField( '用户类型' ,max_length=30) def __str__(self): return self.username |
(3) 在app01/admin.py中定义显示数据
1 2 3 4 5 6 7 | from django.contrib import admin from .models import User class UserAdmin(admin.ModelAdmin): list_display = ( 'username' , 'userpass' , 'useremail' ) # 自定义显示字段 admin.site.register(User,UserAdmin) |
(4)创建更改的文件,将生成的py文件应用到数据库
1 2 | python manage.py makemigrations python manage.py migrate |
Django 提供的 QuerySet API,shell玩转MySql
在mysite下输入【 python manage.py shell】,然后查询数据表。
创建一条用户信息:
1 | User.objects.create(username= "李白01" , userpass= "libai123" ,useremail= "libai@163.com" ,usertype= "超级管理员" ) |
其他操作方式:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | # 方法 1 User.objects.create(username= "李白" , userpass= "libai123" ,useremail= "libai@163.com" ,usertype= "超级管理员" ) # 方法 2 twz =User(username= "李白" , userpass= "libai123" ,useremail= "libai@163.com" ,usertype= "超级管理员" ) twz.save() # 获取对象: Person.objects.all() # 满足条件查询 User.objects.filter(username= "李白" ) # 迭代查询: es = Entry.objects.all() for e in es: print(e.headline) # 查询排序: User.objects.all().order_by( 'username' ) # 链式查询: User.objects.filter(name__contains= "WeizhongTu" ).filter(email= "tuweizhong@163.com" ) # 去重查询: qs = qs.distinct() # 删除操作: User.objects.all().delete() |
1 2 | # 更新操作: Person.objects.filter(name__contains= "abc" ).update(name= 'xxx' ) |
1 2 3 | 数据的导出: python manage.py dumpdata [appname] > appname_data.json python manage.py dumpdata blog > blog_dump.json |
1 2 | 导出用户数据 python manage.py dumpdata auth > auth.json # 导出用户数据 |
批量向数据表导入数据
将name.txt导入数据库:
数据导入源码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | #!/usr/bin/env python #coding:utf-8 # from django.core import serializers import json import os os.environ.setdefault( "DJANGO_SETTINGS_MODULE" , "xmjc_analysis.settings" ) '' ' Django 版本大于等于1.7的时候,需要加上下面两句 import django django.setup() 否则会抛出错误 django.core.exceptions.AppRegistryNotReady: Models aren't loaded yet. '' ' import django import json if django.VERSION >= (1, 7):#自动判断版本 django.setup() def main(): from analysis.models import User f = open( './readme/files/name.txt' ,encoding= 'utf-8' ) for line in f: name,pwd,email,type = line.split( '|' ) User.objects.create(username=name,userpass=pwd,useremail=email,usertype=type) f.close() def jsondb(): from analysis.models import User data = eval(serializers.serialize( "json" , User.objects.all())) # json userdata = json.dumps(data) print(type(userdata)) if __name__ == "__main__" : main() # jsondb() print( '插入完毕!' ) |