ORM查看SQL(一):借助日志系统操作ORM时,关注数据库的sql是关键信息,不仅有助于学习django的orm模型,还可以了解数据库。更重要的是,它可以帮助我们更好地优化查询。在项目的settings.json中加入如下代码,这样我们就可以看到sqlLOGGING={'version':1,'disable_existing_loggers':False,'handlers':{'console':{'level':'DEBUG','class':'logging.StreamHandler',},},'loggers':{'django.db.backends':{'handlers':['console'],'propagate':True,'level':'DEBUG',},}}WSGIclassDLinkedNode:def__init__(self,key=0,value=0):self.key=keyself.value=valueself.prev=Noneself.next=NoneclassLRUCache:def__init__(self,capacity:int):self.cache=dict()#使用伪头和伪尾节点self.head=DLinkedNode()self.tail=DLinkedNode()self.head.next=self.tailself.tail.prev=self.headself.capacity=capacityself.size=0defget(self,key:int)->int:ifkeynotinself.cache:return-1#如果key存在,先通过哈希表定位,然后移动到头部node=self.cache[key]self.moveToHead(node)returnnode.valuedefput(self,key:int,value:int)->None:ifkeynotinself.cache:#如果key不存在,创建一个新节点node=DLinkedNode(key,value)#添加到哈希表self.cache[key]=node#添加到双向链表的头部self.addToHead(node)self.size+=1ifself.size>self.capacity:#如果超过容量,删除双向链表的尾部Noderemoved=self.removeTail()#删除哈希表中的对应项self.cache.pop(removed.key)self.size-=1else:#如果key存在,先通过哈希表定位,然后修改值移动到头部node=self.cache[key]头node.next=self.head.nextself.head.next.prev=nodeself.head.next=nodedefremoveNode(self,node):node.prev.next=node.nextnode.next.prev=node.prevdefmoveToHead(self,node):self.removeNode(node)self.addToHead(node)defremoveTail(self):node=self.tail.prevself.removeNode(node)returnnode创建超级用户pythonmanage.pycreatesuperuserinputusername,email,password(密码不可见)
