1 背景:python提供了很多数据库接口, 常用的数据库有 MS SQL Server mysql oracle 等。打开链接 https: wiki python org moin
1.èæ¯ï¼
pythonæä¾äºå¾å¤æ°æ®åºæ¥å£ï¼ 常ç¨çæ°æ®åºæ MS SQL Server /mysql /oracle çã
æå¼é¾æ¥ https://wiki.python.org/moin/DatabaseInterfaces
æ¯python å ³äºæ°æ®åºæ¥å£çä¸ä¸ªæ»ç» ï¼ å¯ä»¥çå°pythonæ¯æç访é®çæ°æ®åºç³»ç»ã
2.模åï¼
python 主è¦æ¯éè¿æ¨¡ååæ°æ®åºè¿æ¥çã
2.1 å®è£ 模åï¼
å¦æ使ç¨ancondaï¼æ¬èº«å°±ä¼éåå¾å¤æ¨¡åï¼ä¸éè¦æå¨å®è£ ãå¦æç¨pycharmå°±è¦æå¨å®è£ 模åã
å®è£ 模åæµç¨ï¼
ä¸è½½æ¨¡åæ©å±å æ¾å°è·¯å¾ä¸ââ>cmdæ¾å°ç¸åºè·¯å¾ââ> pip install +æ©å±å åå
ä¸é¢å举ä¸äºå¸¸ç¨è¿æ¥æ°æ®åºç模åï¼pymssql / sqlite3/ PyMySQL/pyodbc/odbc/adodbapi
ä¸å模åè¿æ¥çæ°æ®åºä¸åï¼ æ¯æççæ¬ç³»ç»æçä¹ä¸ä¸æ ·ãä½æ¯å¤§ä½ç¨æ³é½æ¯ç¸è¿çï¼ å 为æDB-API
ç¸å ³æ¨èï¼ãPythonæç¨ã
3.Python DB-API
3.1èæ¯ï¼
å¨æ²¡æDB-API ä¹åï¼ ä¸åæ°æ®åºæä¸åçæ°æ®åºæ¥å£ç¨åºï¼ è¿å°±å¯¼è´python è®¿é® database çæ¥å£ç¨åºé常混乱ãå¦ææ们å¦ä¹ äºpython è®¿é® mysql çæ¥å£ç¨åºï¼ ç¶åè¦åæ¢å°å¦ä¸ä¸ªæ°æ®åºä¸ï¼ æ们è¿è¦å¨å¦ä¹ å¦å¤ä¸ä¸ªæ°æ®åºçæ¥å£ç¨åºãpython DB-APIå°±æ¯ä¸ºäºè§£å³æ¥å£ç¨åºæ··ä¹±èçæçãæäºDB-API, å¨ä¸åæ°æ®åºä¸ç§»æ¤ä»£ç å°±åå¾ç®åçå¤äºã
3.2Python DB-APIï¼
Python å®ä¹äºä¸å¥æä½æ°æ®åºç DB-API æ¥å£ï¼å®æ¯ä¸ä¸ªè§èï¼å®ä¹äºä¸ç³»åå¿ é¡»ç对象åæ°æ®åºååæ¹å¼ï¼ä»¥ä¾¿ä¸ºä¸åçåºå±æ°æ®åºç³»ç»æä¾ä¸è´ç访é®æ¥å£
è¿ä¸ªé¾æ¥å°±æ¯python å®æ¹ç»å®ç DB-API ç说æ https://www.python.org/dev/peps/pep-0249/
3.3 Python DB--APIçå 容ï¼
è¿æ¥å¯¹è±¡ï¼
?Connect()å建è¿æ¥:host/server /user/password/db connectæ¹æ³çæä¸ä¸ªconnect对象, æ们éè¿è¿ä¸ªå¯¹è±¡æ¥è®¿é®æ°æ®åºã符åæ åç模åé½ä¼å®ç°connectæ¹æ³ã
?close():å ³éè¿æ¥
?commit():æ交å½åäºå¡ãååºæäºæ´æ¹åç¡®ä¿å·²ç»è¿è¡äºæ交ï¼è¿æ ·æå¯ä»¥å°è¿äºä¿®æ¹çæ£å°ä¿åå°databaseä¸
?rollback() åæ»ä¸ä¸æ¬¡è°ç¨ commitï¼ï¼ä»¥æ¥å¯¹æ°æ®åºæåçæ´æ¹
?cursor():å建游æ ãç³»ç»ä¸ºç¨æ·å¼éçä¸ä¸ªæ°æ®ç¼å²åºï¼ç¨äºåæ¾SQLè¯å¥æ§è¡ç»æãcursor游æ æ¯æç¶æçï¼å®å¯ä»¥è®°å½å½åå·²ç»åå°ç»æç第å 个记å½äºï¼å æ¤ï¼ä¸è¬ä½ åªå¯ä»¥éåç»æéä¸æ¬¡ãå¨ä¸é¢çæ åµä¸ï¼å¦ææ§è¡fetchone()ä¼è¿å为空ãè¿ä¸ç¹å¨æµè¯æ¶éè¦æ³¨æ
游æ 对象ï¼
?Execute()æ§è¡ä¸ä¸ªæ°æ®åºæ¥è¯¢æå½ä»¤ã execute æ§è¡sql è¯å¥ä¹åè¿è¡çç»æä¸ä¼ç´æ¥output åºæ¥ ï¼ èæ¯æ¾å°äºä¸ä¸ªç¼ååºï¼ è¦ç¨ fetchè¯å¥+print å¯ä»¥æ¥è¯¢sqlè¿è¡çç»æ
?fetchone ()å¾å°ç»æéçä¸ä¸è¡
?fetchmany(size)å¾å°ç»æéçä¸å è¡
?fetchall()è¿åç»æéä¸å©ä¸çææè¡
?rowcount è¿åå½±åçè¡æ°
?Close()å ³é游æ 对象
3.4Python DB--APIçå·¥ä½åçåæµç¨ï¼
å¦å¾æ示å¦ææpython åæ°æ®åºæ¯ä½ä¸¤ä¸ªä¸åçå°ç¹ï¼ connection å°±æ¯è·¯ï¼ è½è¿æ¥pythonådatabaseãcursorå°±åå¨è·¯ä¸è¡é©¶çå°è´§è½¦ï¼ å¯ä»¥ç¨äºæ§è¡sql è¯å¥ï¼ 以ååå¨sql è¿è¡çç»æã
æµç¨ï¼
4.MS SQL Server 示ä¾ï¼
4.1 å¯¼å ¥æ¨¡åãå建è¿æ¥ï¼
4.2 å建游æ ï¼ æ¸¸æ å建ä¹åå°±å¯ä»¥å¯¹æ°æ®åºè¿è¡æ¥è¯¢æ´æ¹äºï¼
4.3对æ°æ®è¿è¡æä½ï¼å建表ãæå ¥è¡ãæ´æ°æ°æ®ãå¢å åãå é¤è¡ãåã表ï¼ï¼
4.4 æ¥è¯¢ è·åè¡ï¼
5.å ¶ä»ï¼
使ç¨æ¸¸æ çæ¶åè¦æ³¨æï¼ æ¯æ¬¡è¿æ¥åªè½æä¸ä¸ªæ¸¸æ æ¥è¯¢å¤äºæ´»è·ç¶æã codeæ¼ç¤ºï¼
execute()循ç¯å executemany() æå ¥100000 æ¡æ°æ®æµéï¼