如目前项目名为: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= "[email protected]" ,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= "[email protected]" ,usertype= "超级管理员" )
# 方法 2
twz =User(username= "李白" , userpass= "libai123" ,useremail= "[email protected]" ,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= "[email protected]" )
# 去重查询:
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( '插入完毕!' )
|