麒麟v10 上部署 TiDB v5.1.2 生产环境优化实践
752
2023-12-15
导读:本篇文章首席CTO笔记来给大家介绍有关django如何查看数据库配置文件的相关内容,希望对大家有所帮助,一起来看看吧 Django用户配置文件数据库的问题问题,怎么解决由于创建连接的代价是很高的, 我们每次访问数据库都重新创建连接的话是非常消耗性的.。
我们可以再程序启动的时候先创建出一些连接, 放在一个集合中, 访问数据库的时候从集合中获取, 使用结束再放回集合中.这样做只是在程序启动的时候消耗性能去创建连接, 每次访问数据库的时候都是从内存中获取连接, 可以大大提升效率.
注意事项:由于池中增删非常频繁, 使用集合LinkedList效率较高集合中所有连接都被占用时创建新连接, 但需要注意连接总数使用组合模式/动态代理处理释放连接的方法, 当运行close方法时, 将连接放回池中
关于数据库连接池:数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标数据库连接池正是针对这个问题提出来的。
数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而再不是重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。
这项技术能明显提高对数据库操作的性能 数据库连接池在初始化时将创建一定数量的数据库连接放到连接池中,这些数据库连接的数量是由最小数据库连接数来设定的无论这些数据库连接是否被 使用,连接池都将一直保证至少拥有这么多的连接数量。
连接池的最大数据库连接数量限定了这个连接池能占有的最大连接数,当应用程序向连接池请求的连接数超 过最大连接数量时,这些请求将被加入到等待队列中
如何查看django与mysql数据库连接创建mysite目录django-admin.py startproject mysite这个命令作用是:这将创建在当前目录创建一个mysite目录前提是从命令行上cd到你想储存你代码的目录,然后生成各种子目录.
首先需要注意的是文件目录这里面的文件大致作用:books这个 文件夹存放的是新建数据库的各种信息books/templates这个目录下装的是网页的布局,当然这个网页的布局就是show.html所提供books/views.py定义函数,并且把show.html引入进去,文件内容如下:
from django.shortcuts import render,render_to_responsefrom django.template import loaderfrom books import models
# Create your views here.def show(request):# publisher_list = [{name:"gongye",city:beijing}]publisher_list = models.Publisher.objects.all()
return render_to_response(show.html,{publisher_list:publisher_list})12345678910111213books/models.py文件存放的是你所创建的数据库,代码如下:
#coding=utf-8from __future__ import unicode_literalsfrom django.db import models# Create your models here.
class Publisher(models.Model):name = models.CharField(max_length = 30)address = models.CharField(max_length = 50)
city = models.CharField(max_length = 60)state_province = models.CharField(max_length = 30)country = models.CharField(max_length = 50)
website = models.URLField()# __unicode__这个函数用来返回某个值可以很好的用于查询和admin界面的显示def __unicode__(self):return self.name
class Author(models.Model):first_name = models.CharField(max_length = 30)last_name = models.CharField(max_length = 40)
email = models.EmailField(blank = True,verbose_name = e-mail)def __unicode__(self):return u%s %s%(self.first_name,self.last_name)
class Book(models.Model):title = models.CharField(max_length = 100)author = models.ManyToManyField(Author)
publisher = models.ForeignKey(Publisher)publication_date = models.DateField(blank = True,null = True)
def __unicode__(self):return self.title123456789101112131415161718192021222324252627282930313233books下其他的文件就是在创建的过程中自己产生的.
website/templates文件里存放的是各种显示的静态网页布局,这么多html文件,只要你在访问测试的时候,端口号后面加上html的文件名字就行.比如,我要访问templates/base.html文件,输入网址:localhost:8000/base就可以.
website/settings.py文件是Django的设置文档,里面的INSTALLED_APPS添加多个应用,比如这里面我九添加了books应用,代码如下:INSTALLED_APPS = [django.contrib.admin,
django.contrib.auth,django.contrib.contenttypes,django.contrib.sessions,django.contrib.messages,django.contrib.staticfiles,
books,django怎么使用本机mysql数据库step 1:修改你的django project目录下的settings.py 文件至如下所示:其中,NAME 对应的 ‘db_name 是你事先使用mysql
的命令行提示符创建的数据库名称注意:在django使用数据库之前,你必须先创建出数据库,否则会报错USER对应的username 还有 PASSWORD 对应的‘passwd 就是你在mysql中创建的用户名和密码。
如果你有多个的话,随便填一个就好HOST和PORT默认都可以不填题外话: 使用用户名和密码登录mysql的方法:首先,你需要进入 mysql/bin的目录下,也可以在.bash_profile中设置环境变量:
PATH=/usr/local/bin:/usr/bin:/bin:/sbin:/usr/sbin:/usr/local/sbin:/usr/local/Cellar/mysql/5.6.22/bin/
再在prompt输入 mysql -u username -p, 回车后再输入 passwd即可step 2:然后,在manage.py路径中使用python manage.py syncdb 试试,结果会提示你错误找不到 MySQLdb 这个module, 为什么呢, 因为 python manage.py syncdb 命令是这样工作的:
1. 在project目录的settings.py的INSTALLED_APPS元组中找到可能需要更新的APP2. 找到每一个APP目录中的models.py (关系定义文件),并针对变化在数据库中进行更新。
说了这么多,前面那个错误 找不到 module MySQLdb 是什么意思啊 ?先给个图,再解释:因为在models.py中定义关系使用的是python,而真正在数据库中操作形成model当然一定要用sql语句,所以必须要有一些功能模块
来把python语句转化成sql语句如果你使用sqlite的话,由于sqlite和转化模块都已经由python内置了,所以直接使用不会发生错误但是 ”mysql语句的转化模块“ 就需要你手动加载了,这些模块放在 MySQL-python 中。
我是使用pip 安装的:安装了之后,再使用 python manage.py syncdb就OK啦我使用的系统是 OS X,下面是 mysql 默认的安装路径/usr/local/Cellar/mysql/5.6.22/。
如果你想知道你的数据库文件是放在哪里的,你可以查看mysql_config文件中的ldata变量,这个变量的值就是 默认的数据库文件夹存储的路径 我的系统中,mysql_config的完整路径是 :/usr/local/Cellar/mysql/5.6.22/bin/mysql_config
「Django框架」-拆分配置文件settings使用 Django 命令生成一个项目的基本结构时,配置信息默认保存在和项目目录同名的目录下的 settings.py 文件里, 在实际的开发中,对于一个项目而言,这样往往是不合适的,需要将 settings 配置文件拆分为几个文件, 线上和线下都会使用的文件放置到 base.py 文件里,线上的放置在 product.py 文件里,开发测试的文件放置在 develop.py 文件里。
这样功能划分就明确了,方便我们线上线下的调试 1)在项目同名目录下,创建一个 settings 的包(目录下含 __init__.py 的文件夹) 2)在 settings 的包中分别新建3个文件:公共基础 base.py (用于配置 Django 默认生成配置文件), develop.py (用于开发环境)、 product.py (用于生产环境)。
3)将原来的 settings.py 的内容复制到 base.py 文件中 4)确认目录OK后,我们需要修改 base.py 中的时区和语言配置: 如果有类似公共部分需要修改的,则在 base.py 中修改即可,例如注册子应用之类的,在此就不一一举例。
5)之后,对于线上线下不同部分,我们只要导入 base.py 模块,再针对不同部分进行修改即可,例如线上线下对接不同的测试数据库,我们则可以修改数据库连接: 6)修改 manage.py 文件, Django 使用自带服务启动时需要知道 settings 文件的路径。
7)到上生产的时候,使用 asgi.py ( Django3.x 中)或 wsgi.py ( Django2.x 以下版本),则可以更改生产配置文件的路径: 以上又有个问题,如果线上线下环境切换,又要改动代码, 我们可以通过设置系统环境变量来动态获取,避免修改代码:
这样通过读取系统环境变量中的 LIPIN_PROFILE 来控制 Django 加载不同的 settings 文件 这样可以将原来的 settings.py 文件删掉!! 但是这样就会有个问题,你会发现之前好好的网页我们访问不了了,模板找不到!。
这是因为之前的配置文件中,路径问题,因为我们原来的配置文件是在同名目录下,而我们现在将配置文件拆分为一个新的包,所以还要上一级目录才是我们需要的:结语:以上就是首席CTO笔记为大家整理的关于django如何查看数据库配置文件的相关内容解答汇总了,希望对您有所帮助!如果解决了您的问题欢迎分享给更多关注此问题的朋友喔~
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。