【python常用框架–Django】django连接mysql数据库及存取数据

启动服务:python manage.py runserver


app01 :应用名
dj:项目同名文件夹
static:存放静态文件
temphtml:存放html文件

连接数据库

在settings.py文件中找到 DATABASES,设置数据库连接

在models.py中设置数据库,建立一个类,设置变量

	class mod(models.Model):
		id = models.AutoField(primary_key=True)
		user= models.CharField(max_length=255)
		password= models.IntegerField() 
		
		# 数据输出样式
		def __str__(self):
		 	return f"['id': {self.id}, 'user': {self.user}, 'password': {self.password}]"
		 
		 class Meta:
		 	db_table = 'us_pass'  
		 	# 指定数据表名,可以是需要新建表的表名
		 	# 也可以是数据库中已存在的表
		 	# 但变量名需要和数据库中保持一致。

如果是需要新建表,则在终端先后运行:

	python manage.py makemigrations app_name
	python manage.py migrate



即可在指定数据库中生成指定表结构,也会生成很多其他的表,不用理会。如果库中已存在同名表,则不会新建。

向数据库存储数据

在views.py文件中导入相关类:
from app01.models import mod
这里显示表单的网页是首页,由home函数管理,输入数据后,带着参数跳转到index页面,由index函数管理,因此想要得到数据,需要在index函数中获取。

def home(request):
    return render(request, 'home.html')
    
def index(request):
    if request.method == 'POST':
        name = request.POST.get('name')
        password = request.POST.get('password')
        # 获取网页中的数据
        print(name, password)
        # 映射存储
        datas = mod()
        datas.user = name
        datas.password = password
        datas.save()
    return render(request, 'demo01.html')

home.html表单部分代码:

<form action="/index/" method="post">
<!--从home页post跳转到index页-->
    {% csrf_token %}
    name:<input type="text" name="name"/><br/>
    password:<input type="password" name="password"/><br/>
    <input type="submit" value="提交"/>
</form>

在网页中输入需要存储的数据

打印结果

数据库存储结果

从数据库中读取数据

同样是在views.py中导入需要的类
from app01.models import mod

def json_html(request):
    if request.method == 'POST':
        name = request.POST.get('name')
        datas = mod.objects.filter(user=name)
        # datas = mod.objects.all()
        # datas = mod.objects.get(id = '1')
        print(datas)
        for da in datas:
        	# 获取某一字段
        	passwords = da.password
    return HttpResponse(datas)

.objects.filter().objects.get()可添加条件。

但是get的条件必须满足在表中唯一,不然会出现get() returned more than one mod -- it returned 2! 的提醒,因为get只能返回一条数据。
filter可返回多条数据,属于QuerySet对象。
all 返回的是表中的所有数据,也属于QuerySet对象。

版权声明:本文为博主作者:古枫桐原创文章,版权归属原作者,如果侵权,请联系我们删除!

原文链接:https://blog.csdn.net/qq_51543898/article/details/130106128

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
青葱年少的头像青葱年少普通用户
上一篇 2024年1月3日
下一篇 2024年1月3日

相关推荐