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

启动服务:python manage.py runserver

【python常用框架--Django】django连接mysql数据库及存取数据_第1张图片
app01 :应用名
dj:项目同名文件夹
static:存放静态文件
temphtml:存放html文件

连接数据库

在settings.py文件中找到 DATABASES,设置数据库连接
【python常用框架--Django】django连接mysql数据库及存取数据_第2张图片
在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

【python常用框架--Django】django连接mysql数据库及存取数据_第3张图片
【python常用框架--Django】django连接mysql数据库及存取数据_第4张图片
即可在指定数据库中生成指定表结构,也会生成很多其他的表,不用理会。如果库中已存在同名表,则不会新建。

向数据库存储数据

在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">

    {% csrf_token %}
    name:<input type="text" name="name"/><br/>
    password:<input type="password" name="password"/><br/>
    <input type="submit" value="提交"/>
form>

在网页中输入需要存储的数据
【python常用框架--Django】django连接mysql数据库及存取数据_第5张图片
打印结果
在这里插入图片描述
数据库存储结果
【python常用框架--Django】django连接mysql数据库及存取数据_第6张图片

从数据库中读取数据

同样是在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对象。

你可能感兴趣的:(python,python常用框架,python,django,数据库)