Niulu Academy: Pymysql modul Pythonu
1. Základní rozšiřující testovací operace 2, Python volá uloženou proceduru 3, implementace multithreadingu operace přístupu mysql
一、基础操作Je to velmi problematické pokaždé, když se připojujete, používáte kontextovou správu, zjednodušujete proces připojení.
二、如何python调用 callproc 进行调用储存过程1. Vytvořte kompletní připojení k databázi MySQL 2. Pomocí kurzoru () inicializujte databázový kurzor 3. Pomocí kurzoru zavolejte funkci CallProc pro přidání proměnných, které je třeba vyvolat, jako je CallProc (Name, Args) name = "proc_user" , args = ['21', SYH]; 4. Kurzor může předat řadu sad výsledků pomocí Storeresult k získání řady bodů Iteratoru do sady výsledků 5. Získejte výsledky pomocí metody FetChall
CallProc nemůže získat proměnné OUT a INOUT přímo, ale proměnné jsou dostupné na serveru a proměnnou lze získat pomocí @_procname_n a lze ji získat podle pozice příchozích parametrů, jako je první SELECT @ _ProcName_0
调用无参存储过程调用有参存储过程三、多线程、多进程操作mysql1, multithreaded connection:
Nejprve pomocí modulu Thieading.Thread vytvořte nejprve připojení k MySQL a poté pomocí více vláken pro provedení specifického SQL. Zjistilo se ale, že když se spustí, nehlásí to, že je vypnuté připojení mysql, tedy jiné chyby výjimek. Internetový dotaz, protože více vláken nemůže sdílet databázové připojení, nastanou nepředvídatelné situace.
Oficiální doporučení používají modul fondu připojení k odkazování na praxi ostatních, vytváření fondu připojení vláken a vytváření více připojení najednou.
2. Tři způsoby, jak vytvořit fond vláken 1) V minulosti: pomocí modulu ThreadPool, toto je modul třetí strany Pythonu, podporuje Python2 a Python3. ThreadPool je starší modul. Ačkoli stále existují někteří lidé, kteří se používají, již nejsou mainstream, o vícevláknovém Pythonu, který nyní začíná v budoucnosti (modul FUTURE), konkrétní metoda použití je následující:
Výsledky operace jsou následující:
2) V budoucnu: Pomocí modulu Concurrent.futures je tento modul modulem z Pythonu3, ale lze nainstalovat i Python2.7 nebo více verzí a konkrétní použití je následující:
Výsledky operace jsou následující:
[Poznámka] Concurrent.futures.threadpoolexecutor, při odesílání úkolů existují dva způsoby, jeden je funkce submit () a druhý je funkce map (), hlavní rozdíl mezi těmito dvěma je:
Mapa může garantovat pořadí výstupu, pořadí odeslání výstupu je chaos
Pokud je funkce úkolu, který chcete odeslat, stejná, můžete jej zjednodušit do mapy. Pokud je však funkce odeslaného úkolu odlišná nebo proces provádění je abnormální (problém bude nalezen přímo v implementaci provádění MAP), Submit ()
Parametry odeslání a MAP se liší. Submit potřebuje pokaždé odeslat cílovou funkci a odpovídající parametry, MAP potřebuje odeslat pouze cílovou funkci a parametr cílové funkce se umístí do iterátoru (seznamu, slovníku).
3) Teď?
Tady je problém, implementace výše uvedených dvou fondů vláken je dobrá. Úlohu lze přidat pouze jednou při inicializaci fondu vláken. Takže předpokládejme, že mám takovou potřebu teď, potřebuji spustit ve fondu vláken a pak jít znovu Přidat novou úlohu dovnitř (poznámka, je to nová úloha, ne nové vlákno), jak to děláte? Ve skutečnosti existují dva způsoby:
Funkce Rewrite ThreadPool nebo Future: Tato metoda vyžaduje zdrojový kód zdrojového modulu. Musíte zjistit mechanismus implementace fondu vláken zdrojového modulu, abyste správně přepsali metodu podle vašich potřeb.
Vytvořte si fond vláken sami: Tato metoda musí mít jasnou představu o fondu vláken připojeném k vytvořené instanci fondu vláken:
Další: Vlastní syntéza mezoporézního kompozitu Fe v provincii Qiyue | Mezoporézní kompozit Fe3O4 / MnO2