0322Django连接mysql数据库

注意事项

持久连接

参数: CONN_MAX_AGE
含义: 一个数据库保持连接的时长,以秒为整数。
默认值: 0 ,表示每次请求请求结束都关闭.
要启用持久连接,可将 CONN_MAX_AGE 设置为正整数秒。对于无限制的持久连接,将其设置为 None。

有时,数据库不会被大多数视图访问,例如因为它是外部系统的数据库,或者由于缓存的原因。在这种情况下,你应该将 CONN_MAX_AGE 设置为一个低值,甚至 0,因为维护一个不太可能被重复使用的连接是没有意义的。这将有助于保持这个数据库的同时连接数较少。
开发服务器每处理一个请求都会创建一个新的线程,消除了持久连接的影响。在开发过程中不要启用它们。
当 Django 建立与数据库的连接时,它会根据所使用的后端设置相应的参数。如果你启用了持久化连接,就不再每次请求都重复这种设置。如果你修改了连接的隔离级别或时区等参数,你应该在每次请求结束时恢复 Django 的默认值,在每次请求开始时强制设置一个合适的值,或者禁用持久连接。

编码

Django 假设所有的数据库都使用 UTF-8 编码。

上面大都是官方文档中写的废话,下面,是一次连接本地MySQL数据库的成功尝试。先将参考写在前面:
这篇文章的参考,主体来源于B站的一位UP视频,先放这里:20分钟快速用django+mysql+pycharm搭建一个自己的web网站,读者也可以参考该视频,觉得好的话,还可以投个.

正文开始: 环境

首先,pycharm中要安装Django和Pymysql
版本可以如下配置:

Django==3.0.8
pymysql==0.9.3

设置

项目名,暂时叫做job_demo,当新建好时,它下面就创建了一个同名应用job_demo

导入包

  • 在项目同名包下__init__.py里面添加
import pymysql
pymysql.install_as_MySQLdb()

设置数据库

在setting.py中,把DATABASES中的内容换掉:

DATABASES = {
	'default': {
	'ENGINE': 'django.db.backends.mysql',#数据库的类型
	'NAME': 'test', #所使用的的数据库的名字
	'USER': 'root', #数据库服务器的用户
	'PASSWORD': '1234', #密码
	'HOST': '127.0.0.1', #主机
	'PORT': '3306', #端口
	}
}

其中,数据库的名字,指向本地的数据库名.
如果不存在,则需要新建

create database test;

基础数据先迁移一次

运行服务器,访问127.0.0.1:8000/admin/,
报错no such table: django_session

sessions是Django内置的app,
在setting.py的INSTALLED_APPS中可以找到


我的提示是: 1146, “Table ‘test.auth_user’ doesn’t exist”

那么,就需要迁移至数据库:

执行迁移

将项目中原有的应用的模型同步迁移到数据库.
首先,断开服务器,然后,输入

python manage.py migrate

可能出错

  • 若提示错误:

ImporperlyConfigured (‘mysqlclient 1.3.13 or newer is requireed;…’)

则打开文件夹:venv>lib>site-packages>django>db>backends>mysql>base.py
把这两行代码注释:

if version < (1, 4, 0):
    raise ImproperlyConfigured('mysqlclient 1.4.0 or newer is required; you have %s.' % Database.__version__)

在这里插入图片描述

  • 出现错误:
    Unable to create the django_migrations table,其原因:

Django2.1之后不再支持MySQL5.5,必须5.6版本以上,我的本地数据库是mysql5.5所以报错了

解决: django降级

pip install Django==2.0.0 -i https://pypi.douban.com/simple

参考文章:Unable to create the django_migrations table ((1064, "You have an error in your SQL syntax;

  • 再次运行
    python manage.py migrate.此时查看数据库,可看到映射成功。
    即: 在test数据库中导入了好几个表.

重新访问admin

运行服务器,访问127.0.0.1:8000/admin/,可以成功.
如果没有Django管理员账户,就需要创建一个.使用命令

python manage.py createsuperuser

密码在这里

自定义表,然后迁移,例如连接数据库做一个登录

在model.py中创建模型

首先,这是在一个叫login_web的应用里进行的~

class UserInfo(models.Model):
	id = models.IntegerField(primary_key = True)
	name = models.CharField(unique=True,max_length=45,blank=True,null=True)
	pwd = models.CharField(max_length=45,blank=True,null=True)

	def __str__(self):		# 便于查看的一个函数
		return self.name

迁移到数据库

  • 配置
    先把login_web应用中的文件注册到根文件
    操作上,把''login_web.apps.LoginWebConfig''写入项目同名应用settings.pyINSTALLED_APPS
    在这里插入图片描述

  • 迁移
    然后这样迁移:

python manage.py makemigrations login_web
python manage.py migrate
  • 查看数据库
    此时,查看数据库,应该出现了一个新表,我这里叫做 login_web_userinfo:
    在这里插入图片描述

连通之后,就可以编写判断逻辑了

首先,先往数据库中放一条数据,注明了已注册者的登录信息

01张三123456

在views.py中编写:

from django.http import HttpResponse
from .models import *

def Login_view(request):
	u = request.POST.get("name",'')
	p = request.POST.get("pwd",'')
	
	if u and p:
		c = UserInfo.objects.filter(stu_name=u,stu_pwd=p).count()
		if c>=1:
			return HttpResponse("登录成功")
		else:
			return HttpResponse("账号密码错!")
	else:
		return HttpResponse("请输入正确的账号密码!")

此外

还可以将已存在的表映射为Django代码

这个的目的,是将数据库中已经存在的表,映射为models.py中类的创建代码.这样,就可以在view.py中引用,并编写视图逻辑了~

创建表

首先,在库中创建想要的表.比如表在test/Tables/class_stu

映射

接着,为了将数据库中的表,映射到polls/model.py中,需要执行命令:

python manage.py inspectdb>polls/models.py

然后,就可以在models.py中,看到相应]的类的创建代码了

注册并写入数据库

已经有什么

在此之前,应该已经有登录界面,并配置好路由选项了~
具体的来说:

html网页:
输入用户名的框,属性name='user'; 密码的,name=pwd
该界面已经被调用.即:应该一上来,就看到登录或注册界面.


路由配置: 放在了polls.url里,或者直接注册到了根URLconf

注册视图逻辑

这里主要写视图逻辑.

def reg(request):
    name = request.POST.get("user",'')
    pwd = request.POST.get("pwd",'')

    if name and pwd:
        stu = StudentInfo(stu_name = name, stu_pwd = pwd)
        stu.save()
        return HttpResponse("注册成功!")
    else:
        return HttpResponse("请输入完整的")
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Python中,可以使用Django框架来连接MySQL数据库。下面是连接MySQL数据库的步骤: 1. 安装MySQL驱动程序 在Python中连接MySQL数据库需要使用MySQL驱动程序,可以使用pip命令安装MySQL驱动程序,命令如下: ``` pip install mysql-connector-python ``` 2. 在Django项目中配置数据库连接信息 在Django项目的settings.py文件中,可以配置MySQL数据库连接信息,如下所示: ``` DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'database_name', 'USER': 'username', 'PASSWORD': 'password', 'HOST': 'localhost', 'PORT': '3306', } } ``` 其中,'ENGINE'指定了使用的数据库引擎,'NAME'指定了数据库名称,'USER'和'PASSWORD'指定了连接数据库的用户名和密码,'HOST'指定了数据库服务器的地址,'PORT'指定了数据库服务器的端口号。 3. 创建Django模型 在Django项目中,可以使用模型来操作数据库。可以在models.py文件中定义模型,如下所示: ``` from django.db import models class Book(models.Model): title = models.CharField(max_length=100) author = models.CharField(max_length=50) pub_date = models.DateField() ``` 上述代码定义了一个Book模型,包含了title、author和pub_date三个字段。 4. 运行数据库迁移命令 在Django项目中,需要运行数据库迁移命令来创建数据库表。可以使用以下命令来运行数据库迁移命令: ``` python manage.py makemigrations python manage.py migrate ``` 5. 使用Django模型操作数据库Django项目中,可以使用模型来操作数据库。可以使用以下代码来创建一条Book记录: ``` from myapp.models import Book from datetime import date book = Book(title='Python入门教程', author='张三', pub_date=date(2021, 1, 1)) book.save() ``` 上述代码创建了一条Book记录,并将其保存到数据库中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值