- åæ
ç°å¨å·²ç»æäºå¤ä¸ªmysqlæ°æ®åºï¼å¹¶ä¸å·²ç»å®ç°äºä¸»ä»åæ¥
- é®é¢
ç±äºåå²åå ï¼é¡¹ç®å¨å¼åçæ¶å并没èè夿°æ®åºè¯»ååç¦»çæ åµï¼ä»£ç é¨åçæ¥è¯¢æ´æ°é½æ¯ä½¿ç¨äºé»è®¤çdefaultæ°æ®ï¼ä»£ç 大è´å¦ä¸
1 | if not Model.object.filter(pk=xx).exists(): |
æ¤æ¶å¦æè¦å读ååç¦»ï¼æ¤æ¶çexistsçæ¥è¯¢å¦æèµ°äºä»åºï¼ç±äºå¹¶åor主ä»åæ¥å»¶è¿ï¼è¿ä¸ªå¤æå¯è½æ¯é误çï¼å¯¼è´äºæ´æ°æä½ä¹æ¯é误ç
- éè¦è§£å³çé®é¢
å¨ä¸æ¹åæä»£ç çåæä¸ï¼æ´æ°æä½åçæ¥è¯¢å¿
须使ç¨ä¸»åºã
è¿éæä»¬ä½¿ç¨ä¸ä¸ªç¬¬ä¸æ¹åºï¼django-multidb-router
- ä½¿ç¨æ¹æ³
1.django mysqlæ°æ®åºä¸åå«é
ç½®å¥½ä¸»ä»æ°æ®åº
1 | DATABASES = { |
2.settings.py ç䏿å
¥è¯¥ç¬¬ä¸æ¹åºä¸é´ä»¶, ç½®äºç¬¬ä¸ä¸ªä½ç½®
1 | MIDDLEWARE_CLASSES = ( |
3.setting.py æ°å¢ä»åºlist
1 | SLAVE_DATABASES = ['salve', 'slave2', '...'] |
4.setting.py æ°å¢æ°æ®åºRouter
1 | DATABASE_ROUTERS = ('multidb.PinningMasterSlaveRouter',) |
éç¹å¨ç¬¬4æ¥ï¼è¯¥Routerçæºç å¦ä¸
1 | class MasterSlaveRouter(object): |
(718) 746-3379大è´è¯´æä¸ä¸
1.æ°æ®åºåå
¥çæ¶åï¼ä½¿ç¨ä¸»åº(é»è®¤default)
2.æ°æ®åºè¯»åçæ¶åï¼å¤æè¯¥ç¨æ·æ¯å¦è¢«æ è®°è¿
3.å¦ææ²¡ææ è®°è¿ï¼æé¡ºåºä»SLAVE_DATABASESä¸ååºä¸ä¸ªä»åºè¯»åæ°æ®
4.å¦æè¢«æ è®°è¿ï¼åç´æ¥ä»ä¸»åºè¯»åæ°æ®
407-629-0708éç¹å¦ä¸
å¦æç¨æ·å¨æå®æ¶é´å
ï¼æPOST/PUT/DELETç请æ±ï¼å¹¶ä¸å¨è¿äºè¯·æ±ä¸ï¼éè¿pythonçthreading.local线ç¨å
¨å±å鿥æ 记该请æ±ï¼
å¨åçæ°æ®åºè¯»åæä½æ¶ï¼è¯»åæ¹åéçå¼ï¼æ¥å¤ææ¯å¦è¯»å主åº
忶鲿¢ç¨æ·å¨è°ç¨POST/PUT/DELETç请æ±åï¼ç«å»æ¥çç»æï¼å¨è¿äºè¯·æ±ç»æåï¼ä¸é¢é
ç½®çä¸é´ä»¶ä¼åæµè§å¨åå
¥ä¸ä¸ª15s(å¯é
ç½®)çcookie,
å¦æç¨æ·å¨è¯·æ±ä¸å
å«è¯¥cookieï¼å认为该请æ±è¢«æ è®°è¿(pinned)ï¼è¯»å主åºç¡®ä¿ç¨æ·å¯ä»¥çå°æ£ç¡®çæ§è¡ç»æ