1. 程式人生 > >10.6單例模式

10.6單例模式

數據庫 spa isp tab spl escape 導入 出版 rip

2018-10-6 18:09:52

單例對象: 第一次導入模塊的時候已經在模塊裏面實例化好了

在Django中 admin.site site就是一個單例,被導入一次後面都直接用啦

只要在Django中導入一次模塊,無論在其他地方再導入還是用的一個對象,

不是把代碼非得寫在一個腳本裏面才是一個程序! Django本身就是一個程序,裏面的文件只要導入一次後面無論再導入都是一個對象

記住: 只要是同一個文件,只要導入過一次,就從對應的文件拿數據,

func.py

from mysingleton import my_singleton

def bar():
    print(id(my_singleton))


import time

mysingleton.py

from mysingleton import my_singleton

def bar():
    print(id(my_singleton))


import time

main.py

# class Person(object):
#
#     def __init__(self,name,age):
#         self.name=name
#         self.age=age
#
#
# alex=Person("alex",33)
# egon=Person("egon",32)

# 單例模式
# 單例模式方式1 :__new__ # class Singleton(object): # # _instance = None # def __new__(cls, *args, **kw): # if not cls._instance: # cls._instance = super(Singleton, cls).__new__(cls, *args, **kw) # return cls._instance # # class MyClass(Singleton): # a = 1 # # # #
mc1=MyClass() # # mc2=MyClass() # # mc3=MyClass() # print(id(mc1)) # print(id(mc2)) # print(id(mc3)) # 單例模式方式2 :模塊方式 # from mysingleton import my_singleton,My_Singleton # my_singleton.foo() # # print(id(my_singleton)) # 思考1 # from mysingleton import my_singleton as my_singleton_new # # print(id(my_singleton_new)) # print(id(my_singleton)) # 思考2 # import func # # func.bar() # 思考3 from mysingleton import my_singleton,My_Singleton ms1=My_Singleton() from mysingleton import my_singleton,My_Singleton ms2=My_Singleton() print(id(ms1)) print(id(ms2))

筆記

day81

sql:

  單表處理:
  Book
   
   
   id title  price    publish       email      addr
   1  python  100    蘋果出版社   123@qq.com   北京
   2  go      200    橘子出版社   234@qq.com   南京
   3  java    211    橘子出版社   234@qq.com   南京
   4  linux   22     橘子出版社   234@qq.com   南京   
   
   
   ###################一對多######################多表:
   
   Book
   
   
   id title    price     publish_id 
   1  python    100         1
   2  go        200         2  
   3  java      211         2   
   4  linux     22          2   
   
  Publish
  
   id      name        email        addr      
   1     蘋果出版社   123@qq.com   北京
   2     橘子出版社   234@qq.com   南京
   
   
   結論: 一旦確定表關系是一對多,那麽關聯字段建在多的表中
   
   book:
   
   Foreignkey   publish_id  refference Publish(id)
   
   
   #######################多對多#################################
   
   Book
   
   
   id title    price     publish_id   
   1  python    100         1
   2  go        200         2  
   3  java      211         2   
   4  linux     22          2  




1 聚合與分組
  
  
       # 統計不止一個作者的圖書名稱:

       select book.title,Count(author.name) as c from book inner join book-authors on ...
                          inner join author on ... 
                     
       group by book.id having c>1
 
  
  
  
2 admin配置參數

    後臺數據庫管理頁面 
    
    
    
    admin model:
    
    對每一個app下的model設計出增傷改查4個url
    
        查看book:
        http://127.0.0.1:8000/admin/app01/book/
        添加book: 
        http://127.0.0.1:8000/admin/app01/book/add/    
        編輯book:
        http://127.0.0.1:8000/admin/app01/book/1/change/
        刪除book:
        http://127.0.0.1:8000/admin/app01/book/1/delete/


    註冊:
       from django.contrib import admin

            # Register your models here.

            from .models import *

            from django.utils.safestring import mark_safe


            class BookConfig(admin.ModelAdmin):

                def deletes(self):
                    return mark_safe("<a href=‘‘>刪除</a>")



                list_display = ["title","price","publishDate",publish,deletes]
                list_display_links = ["price"]
                list_filter=["price","title","authors","publish"]
                list_editable=["title",]

                search_fields=["title","price"]




                def patch_init(self,request,queryset):

                    queryset.update(price=100)

                patch_init.short_description = "批量初始化"

                actions = [patch_init,]

                change_list_template="list.html"
                fields = (title,)


            admin.site.register(Book,BookConfig)


            admin.site.register(Publish)
            admin.site.register(Author)
            admin.site.register(AuthorDetail)



Admin的實現流程:
        1 啟動:
              import admin
              def autodiscover():
                   autodiscover_modules(admin, register_to=site)
                   
                   
               執行每一個app下的admin.py文件
        2 註冊
        
              單例模式
              
              
        
        
        3 設計URL
    
    
    
Xadmin組件





3 ModelForm組件

CRM 

1 Xadmin組件
2 權限
3 crm



‘‘‘ 
  select Max(book.price) as max_price  from author inner join book_authors on ...
                         inner join join book    on ...  

  group by author.name
    

 ‘‘‘



   
   
   
   
   
    Author
    
    id   name  age
    1    alex   38
    2    liwen  43
    
    
    Author_Book
    
    id   author_id    book_id 
    1       1            1
    2       1            2
    3       2            2
    
    
    結論;一旦是多對多的關系:需要建立第三張關系表
    
    #######################一對一#################################
    
    
    Author
    
    id   name  age     
    1    alex   38     
    2    liwen  43    
    
    
    AuthorDetail     
    
    id   tel     gf     author_id(unique)
    1    131    鋼蛋        1 
    2    121    鐵錘        2

    
    
    
    
    
SELECT 
"app01_book"."title" FROM "app01_publish" 
LEFT OUTER JOIN "app01_book" ON ("app01_publish"."nid" = "app01_book"."publish_id")
 WHERE "app01_publish"."name" = 蘋果出版社


SELECT 
"app01_book"."title" FROM "app01_book" INNER JOIN 
"app01_publish" ON ("app01_book"."publish_id" = "app01_publish"."nid") 
WHERE "app01_publish"."name" = 蘋果出版社


SELECT
 
"app01_book"."title", "app01_publish"."name"
 FROM "app01_book" INNER JOIN 
 "app01_book_authors" ON ("app01_book"."nid" = "app01_book_authors"."book_id") 
 INNER JOIN "app01_author" ON ("app01_book_authors"."author_id" = "app01_author"."nid") INNER JOIN "app01_authordetail" ON ("app01_author"."authorDetail_id" = "app01_authordetail"."nid")
 INNER JOIN "app01_publish" ON ("app01_book"."publish_id" = "app01_publish"."nid") 
 
 WHERE "app01_authordetail"."telephone" LIKE 151% ESCAPE \‘
 

10.6單例模式