django数据库操作记录 (django通用增删改查方法)

Django连接mysql库 最基本的连接数据库增删改查:

1.首先安装mysqlclient库:

pip install mysqlclient -i https://pypi.tuna.tsinghua.edu.cn/simple

2.settings.py 修改databases

DATABASES = {

'default':{

'ENGINE' : 'django.db.backends.mysql',

'NAME' : 'study01',

'USER' : 'root',

'PASSWORD' : 'Bysn123456*',

'HOST' : '127.0.0.1',

'PORT' : '3306',

}

}

2.1 Django 远程连接数据库,django.db.utils.OperationalE(1130, "Host ' ...' is not allowed to connect to this MySQL server")。

发现 root 用户只能本地使用。具体解决流程如下:

mysql> use mysql

Reading table information for completion of table and column names

You can turn off this feature to get a quicker startup with -A

Database changed

mysql> select host,user from user;

+-----------+---------------+

| host | user |

+-----------+---------------+

| localhost | mysql.session |

| localhost | mysql.sys |

| localhost | root |

+-----------+---------------+

3 rows in set (0.00 sec)

mysql> update user set host='%' where user='root'

-> ;

Query OK, 1 row affected (0.00 sec)

Rows matched: 1 Changed: 1 Warnings: 0

mysql> select host,user from user;

+-----------+---------------+

| host | user |

+-----------+---------------+

| % | root |

| localhost | mysql.session |

| localhost | mysql.sys |

+-----------+---------------+

3 rows in set (0.00 sec)

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

3、orm类创建数据表 models.py中

name = models.CharField(verbose_name="用户名", max_length=32)

password = models.CharField(verbose_name='密码',max_length=64)

email=models.CharField(max_length=64,verbose_name='邮箱')

相当于mysql创建表

create table djproject01_userinfo(

id bigint auto_increment primary key,

name varchar(32),

password varchar(64),

email varchar(64)

)

4、执行

python manage.py makemigrations

python manage.py migrate

5、orm 增删改查

urls..py

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
       path('user/list/', views.user_list),
       path('user/add/', views.user_add),
       path('user/delete/', views.user_delete),
       path('user/<int:nid>/edit/',views.user_edit),

]

views.py

from study01.models import UserInfo

#查询所有的用户信息

def user_list(request):

# 获取数据库中所有的用户信息

data_list = UserInfo.objects.all()

print(data_list)

return render(request, "user/user_info.html", {"data_list": data_list})

#增加用户信息

def user_add(request):

if request.method == "GET":

return render(request, "user/user_add.html")

# 获取用户提交的数据

user = request.POST.get("user")

pwd = request.POST.get("pwd")

email = request.POST.get("email")

# 添加到数据库

UserInfo.objects.create(name=user, password=pwd, email=email)

return redirect("/user/list/")

#删除用户信息

def user_delete(request):

nid = request.GET.get('nid')

UserInfo.objects.filter(id=nid).delete()

return redirect("/user/list/")

#修改用户信息

def user_edit(request, nid):

obj1 = UserInfo.objects.get(id=nid)

if request.method == 'GET':

return render(request, 'user/user_edit.html', {'userList': obj1})

user = request.POST.get("user")

pwd = request.POST.get("pwd")

email = request.POST.get("email")

UserInfo.objects.filter(id=nid).update(name=user, password=pwd, email=email)

return redirect("/user/list")

user_info.html

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<title>用户列表</title>

</head>

<body>

<h1>用户列表信息</h1>

<a href="/user/add/">添加</a>

<table border="1">

<thead>

<tr>

<th>ID</th>

<th>姓名</th>

<th>密码</th>

<th>邮箱</th>

<th>操作</th>

</tr>

</thead>

<tbody>

{% for obj in data_list %}

<tr>

<td>{{ obj.id }}</td>

<td>{{ obj.name }}</td>

<td>{{ obj.password }}</td>

<td>{{ obj.email}}</td>

<td>

<a href="/user/delete/?nid={{ obj.id }}">删除</a>

<a href="/user/{{ obj.id }}/edit/">修改</a>

</td>

</tr>

{% endfor %}

</tbody>

</table>

</body>

</html

user_add.html

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<title>添加用户</title>

</head>

<body>

<h1>添加用户</h1>

<form method="post" >

{% csrf_token %}

<input type="text" name="user" placeholder="用户名">

<input type="text" name="pwd" placeholder="密码">

<input type="text" name="email" placeholder="邮箱">

<input type="submit" value="提交" >

</form>

</body>

</html>

user_edit.html

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<title>修改用户信息</title>

</head>

<body>

<h1>修改用户信息</h1>

<form method="post" >

{% csrf_token %}

<input type="text" name="user" placeholder="用户名" value="{{ userList.name }}">

<input type="text" name="pwd" placeholder="密码" value="{{ userList.password }}">

<input type="text" name="email" placeholder="邮箱" value="{{ userList.email }}">

<input type="submit" value="提交" >

</form>

</body>

</html>