#ç¨Pythonæä½æ°æ®åºï¼2ï¼ å顾ä¸ä¸å·²æçææï¼ï¼1ï¼è¿æ¥æ°æ®åº;ï¼2ï¼å»ºç«æéï¼ï¼3ï¼éè¿æéæå ¥è®°å½ï¼ï¼4ï¼æäº¤å°æå ¥ç»æä¿åå°æ°æ®åºãå¨äº¤äºæ¨¡å¼ä¸ï¼å 温æ ï¼åç¥æ°ã >>> #å¯¼å ¥æ¨¡å >>> import MySQLdb >>> #è¿æ¥æ°æ®åº >>> conn = MySQLdb.connect(host="localhost",user="root",passwd="123123",db="qiwsirtest",port=3036,charset="utf8") >>> #å»ºç«æé >>> cur = conn.cursor() >>> #æå ¥è®°å½ >>> cur.execute("insert into users (username,password,email) values (%s,%s,%s)",("èé½","9988","[email protected]")) 1L >>> #æäº¤ä¿å >>> conn.commit() 妿çå®è·æä¼¼çï¼æç¹å¼ºè¿«çï¼æ»æ¯æ³æå¾çå°æ°æ®ä¸æäºï¼ææ¾è³å¿åãé£å°±å¨è¿å ¥å°æ°æ®åºï¼ççã mysql> select * from users; +----+----------+----------+------------------+ | id | username | password | email | +----+----------+----------+------------------+ | 1 | qiwsir | 123123 | [email protected] | | 2 | python | 123456 | [email protected] | | 3 | google | 111222 | [email protected] | | 4 | facebook | 222333 | [email protected] | | 5 | github | 333444 | [email protected] | | 6 | docker | 444555 | [email protected] | | 7 | èé½ | 9988 | [email protected] | +----+----------+----------+------------------+ 7 rows in set (0.00 sec) åææ¸©æ çæ¶åï¼æå ¥ç飿¡è®°å½ä¹èµ«ç¶å¨ç®ãä¸è¿è¿éç¹å«æéçå®ï¼æå¨åé¢å»ºç«è¿ä¸ªæ°æ®åºåæ°æ®è¡¨çæ¶åï¼å°±å·²ç»è®¾å®å¥½äºå符ç¼ç 为utf8ï¼æä»¥ï¼å¨ç°å¨çå°çæ¥è¯¢ç»æä¸ï¼å¯ä»¥æ¾ç¤ºæ±åãå¦åï¼å°±çå°çæ¯ä¸å ä½ ä¸æçç åäºã妿çå®éå°ï¼è¯·ä¸è¦æ å¼ ï¼åªéè¦ä¿®æ¹å符ç¼ç å³å¯ãæä¹æ¹ï¼è¯·googleãç½ä¸å¾å¤ã 温æ ç»æï¼å¼å§ç¥æ°ã ##æ¥è¯¢æ°æ® å¨å颿ä½çåºç¡ä¸ï¼å¦æè¦ä»æ°æ®åºä¸æ¥è¯¢æ°æ®ï¼å½ç¶ä¹å¯ä»¥ç¨æéæ¥æä½äºã >>> cur.execute("select * from users") 7L è¿è¯´æä»usersè¡¨æ±æ»æ¥è¯¢åºæ¥äº7æ¡è®°å½ã使¯ï¼è¿ä¼¼ä¹æç¹ä¸å好ï¼åè¯æ7æ¡è®°å½æ¥åºæ¥äºï¼ä½æ¯å¨åªéå¢ï¼çåé¢å¨'mysql>'䏿使¥è¯¢å½ä»¤çæ¶åï¼ä¸ä¸å°±æ7æ¡è®°å½ååºæ¥äºãæä¹æ¾ç¤ºpythonå¨è¿éçæ¥è¯¢ç»æå¢ï¼ 忥ï¼å¨æéå®ä¾ä¸ï¼è¿è¦ç¨è¿æ ·çæ¹æ³ï¼æè½å®ç°ä¸è¿°æ³æ³ï¼ - fetchall(self):æ¥æ¶å ¨é¨çè¿åç»æè¡. - fetchmany(size=None):æ¥æ¶sizeæ¡è¿åç»æè¡.妿sizeçå¼å¤§äºè¿åçç»æè¡çæ°é,åä¼è¿åcursor.arraysizeæ¡æ°æ®. - fetchone():è¿å䏿¡ç»æè¡. - scroll(value, mode='relative'):ç§»å¨æéå°æä¸è¡.妿mode='relative',å表示ä»å½åæå¨è¡ç§»å¨valueæ¡,妿mode='absolute',å表示ä»ç»æéç第ä¸è¡ç§»å¨valueæ¡. æç §è¿äºè§åï¼å°è¯ï¼ >>> cur.execute("select * from users") 7L >>> lines = cur.fetchall() å°è¿éï¼è¿æ²¡æçå°ä»ä¹ï¼å ¶å®å·²ç»å°æ¥è¯¢å°çè®°å½ï¼æä»ä»¬çå对象ï¼èµå¼ç»åélinesäºãå¦æè¦æå®ä»¬æ¾ç¤ºåºæ¥ï¼å°±è¦ç¨å°æ¾ç»å¦ä¹ è¿ç循ç¯è¯å¥äºã >>> for line in lines: ... print line ... (1L, u'qiwsir', u'123123', u'[email protected]') (2L, u'python', u'123456', u'[email protected]') (3L, u'google', u'111222', u'[email protected]') (4L, u'facebook', u'222333', u'[email protected]') (5L, u'github', u'333444', u'[email protected]') (6L, u'docker', u'444555', u'[email protected]') (7L, u'\u8001\u9f50', u'9988', u'[email protected]') å¾å¥½ãæç¶æ¯éæ¡æ¾ç¤ºåºæ¥äºãå使³¨æï¼ç¬¬ä¸æ¡ä¸çu'\\u8001\\u95f5',è¿éæ¯æ±åï¼åªä¸è¿ç±äºæçshellä¸è½æ¾ç¤ºç½¢äºï¼ä¸å¿ ææ ï¼ä¸å¿ æçå®ã åªæ³æ¥åºç¬¬ä¸æ¡ï¼å¯ä»¥åï¼å½ç¶å¯ä»¥ï¼çä¸é¢çï¼ >>> cur.execute("select * from users where id=1") 1L >>> line_first = cur.fetchone() #åªè¿å䏿¡ >>> print line_first (1L, u'qiwsir', u'123123', u'[email protected]') 为äºå¯¹ä¸è¿°è¿ç¨äºè§£æ·±å ¥ï¼åä¸é¢å®éªï¼ >>> cur.execute("select * from users") 7L >>> print cur.fetchall() ((1L, u'qiwsir', u'123123', u'[email protected]'), (2L, u'python', u'123456', u'[email protected]'), (3L, u'google', u'111222', u'[email protected]'), (4L, u'facebook', u'222333', u'[email protected]'), (5L, u'github', u'333444', u'[email protected]'), (6L, u'docker', u'444555', u'[email protected]'), (7L, u'\u8001\u9f50', u'9988', u'[email protected]')) 忥ï¼ç¨cur.execute()仿°æ®åºæ¥è¯¢åºæ¥çä¸è¥¿ï¼è¢«âä¿åå¨äºcuræè½æ¾å°çæä¸ªå°æ¹âï¼è¦æ¾åºè¿äºè¢«ä¿åçä¸è¥¿ï¼éè¦ç¨cur.fetchall()ï¼æè fechoneçï¼ï¼å¹¶ä¸æ¾åºæ¥ä¹åï¼å为对象åå¨ãä»ä¸é¢çå®éªæ¢è®¨åç°ï¼è¢«ä¿åç对象æ¯ä¸ä¸ªtupleä¸ï¼éé¢çæ¯ä¸ªå ç´ ï¼é½æ¯ä¸ä¸ªä¸ä¸ªçtupleãå æ¤ï¼ç¨for循ç¯å°±å¯ä»¥ä¸ä¸ªä¸ä¸ªæ¿åºæ¥äºã ç宿¯å¦çè§£å ¶å æ¶µäºï¼ æ¥ççï¼è¿æç¥å¥çå¢ã æ¥çä¸é¢çæä½ï¼åæå°ä¸é >>> print cur.fetchall() () æäºï¼æä¹ä»ä¹æ¯ç©ºï¼ä¸æ¯è¯´å为对象已ç»åå¨äºå åä¸äºåï¼é¾éè¿ä¸ªå åä¸ç对象æ¯ä¸æ¬¡ææåï¼ ä¸è¦çæ¥ã éè¿æéæ¾åºæ¥ç对象ï¼å¨è¯»åçæ¶åæä¸ä¸ªç¹ç¹ï¼å°±æ¯é£ä¸ªæéä¼ç§»å¨ãå¨ç¬¬ä¸æ¬¡æä½äºprint cur.fetchall()åï¼å 为æ¯å°ææç齿å°åºæ¥ï¼æéå°±è¦ä»ç¬¬ä¸æ¡ç§»å¨å°æå䏿¡ãå½printç»æä¹åï¼æéå·²ç»å¨æå䏿¡çåé¢äºãæ¥ä¸æ¥å¦æå次æå°ï¼å°±ç©ºäºï¼æå䏿¡å颿²¡æä¸è¥¿äºã ä¸é¢è¿è¦å®éªï¼æ£éªä¸é¢æè¯´ï¼ >>> cur.execute('select * from users') 7L >>> print cur.fetchone() (1L, u'qiwsir', u'123123', u'[email protected]') >>> print cur.fetchone() (2L, u'python', u'123456', u'[email protected]') >>> print cur.fetchone() (3L, u'google', u'111222', u'[email protected]') è¿æ¬¡æä¸ä¸æ¬¡å ¨é¨æå°åºæ¥äºï¼èæ¯ä¸æ¬¡æå°ä¸æ¡ï¼çå®å¯ä»¥ä»ç»æä¸çåºæ¥ï¼æç¶é£ä¸ªæéå¨ä¸æ¡ä¸æ¡åä¸ç§»å¨å¢ã注æï¼æå¨è¿æ¬¡å®éªä¸ï¼æ¯éæ°è¿è¡äºæ¥è¯¢è¯å¥ã é£ä¹ï¼æ¢ç¶å¨æä½åå¨å¨å åä¸ç对象æ¶åï¼æéä¼ç§»å¨ï¼è½ä¸è½è®©æéåä¸ç§»å¨ï¼æè ç§»å¨å°æå®ä½ç½®å¢ï¼è¿å°±æ¯é£ä¸ªscroll() >>> cur.scroll(1) >>> print cur.fetchone() (5L, u'github', u'333444', u'[email protected]') >>> cur.scroll(-2) >>> print cur.fetchone() (4L, u'facebook', u'222333', u'[email protected]') æç¶ï¼è¿ä¸ªå½æ°è½å¤ç§»å¨æéï¼ä¸è¿è¯·ä»ç»è§å¯ï¼ä¸é¢çæ¹å¼æ¯è®©æéç¸å¯¹ä¸å½åä½ç½®å䏿è åä¸ç§»å¨ãå³ï¼ cur.scroll(n)ï¼æè ï¼cur.scroll(n,"relative")ï¼æææ¯ç¸å¯¹å½åä½ç½®å䏿è åä¸ç§»å¨ï¼nä¸ºæ£æ°ï¼è¡¨ç¤ºåä¸ï¼ååï¼ï¼nä¸ºè´æ°ï¼è¡¨ç¤ºåä¸ï¼ååï¼ è¿æä¸ç§æ¹å¼ï¼å¯ä»¥å®ç°âç»å¯¹âç§»å¨ï¼ä¸æ¯âç¸å¯¹âç§»å¨ï¼å¢å ä¸ä¸ªåæ°"absolute" ç¹å«æéç宿³¨æçæ¯ï¼å¨pythonä¸ï¼åºå对象æ¯çé¡ºåºæ¯ä»0å¼å§çã >>> cur.scroll(2,"absolute") #åå°åºå·æ¯2,使åç¬¬ä¸æ¡ >>> print cur.fetchone() #æå°ï¼æç¶æ¯ (3L, u'google', u'111222', u'[email protected]') >>> cur.scroll(1,"absolute") >>> print cur.fetchone() (2L, u'python', u'123456', u'[email protected]') >>> cur.scroll(0,"absolute") #åå°åºå·æ¯0,峿åtupleçç¬¬ä¸æ¡ >>> print cur.fetchone() (1L, u'qiwsir', u'123123', u'[email protected]') è³æ¤ï¼å·²ç»çæäºcur.fetchall()åcur.fetchone()以åcur.scroll()å ä¸ªæ¹æ³ï¼è¿æå¦å¤ä¸ä¸ª,æ¥è¿ä¸è¾¹çæä½ï¼ä¹å°±æ¯æéå¨åºå·æ¯1çä½ç½®ï¼æåäºtupleçç¬¬äºæ¡ >>> cur.fetchmany(3) ((2L, u'python', u'123456', u'[email protected]'), (3L, u'google', u'111222', u'[email protected]'), (4L, u'facebook', u'222333', u'[email protected]')) ä¸é¢è¿ä¸ªæä½ï¼å°±æ¯å®ç°äºä»å½åä½ç½®ï¼æéæåtupleçåºå·ä¸º1çä½ç½®ï¼å³ç¬¬äºæ¡è®°å½ï¼å¼å§ï¼å«å½åä½ç½®ï¼åä¸ååº3æ¡è®°å½ã è¯»åæ°æ®ï¼å¥½åæç¹å°å¦åãç»ç»ç¢ç£¨ï¼è¿æ¯æéççãä½ è§å¾å¢ï¼ ä¸è¿ï¼pythonæ»æ¯è½å¤ä¸ºæä»¬çæ³çï¼å®çæéæä¾äºä¸ä¸ªåæ°ï¼å¯ä»¥å®ç°å°è¯»åå°çæ°æ®åæåå ¸å½¢å¼ï¼è¿æ ·å°±æä¾äºå¦å¤ä¸ç§è¯»åæ¹å¼äºã >>> cur = conn.cursor(cursorclass=MySQLdb.cursors.DictCursor) >>> cur.execute("select * from users") 7L >>> cur.fetchall() ({'username': u'qiwsir', 'password': u'123123', 'id': 1L, 'email': u'[email protected]'}, {'username': u'mypython', 'password': u'123456', 'id': 2L, 'email': u'[email protected]'}, {'username': u'google', 'password': u'111222', 'id': 3L, 'email': u'[email protected]'}, {'username': u'facebook', 'password': u'222333', 'id': 4L, 'email': u'[email protected]'}, {'username': u'github', 'password': u'333444', 'id': 5L, 'email': u'[email protected]'}, {'username': u'docker', 'password': u'444555', 'id': 6L, 'email': u'[email protected]'}, {'username': u'\u8001\u9f50', 'password': u'9988', 'id': 7L, 'email': u'[email protected]'}) è¿æ ·ï¼å¨å ç»éé¢çå ç´ å°±æ¯ä¸ä¸ªä¸ä¸ªåå ¸ãå¯ä»¥è¿æ ·æ¥æä½è¿ä¸ªå¯¹è±¡ï¼ >>> cur.scroll(0,"absolute") >>> for line in cur.fetchall(): ... print line["username"] ... qiwsir mypython google facebook github docker èé½ æ ¹æ®åå ¸å¯¹è±¡çç¹ç¹æ¥è¯»åäºâé®-å¼âã ##æ´æ°æ°æ® ç»è¿åé¢çæä½ï¼è¿ä¸ªå°±æ¯è¾ç®åäºï¼ä¸è¿éè¦æéçæ¯ï¼å¦ææ´æ°å®æ¯ï¼åæå ¥æ°æ®ä¸æ ·ï¼é½éè¦commit()æ¥æäº¤ä¿åã >>> cur.execute("update users set username=%s where id=2",("mypython")) 1L >>> cur.execute("select * from users where id=2") 1L >>> cur.fetchone() (2L, u'mypython', u'123456', u'[email protected]') 仿ä½ä¸çåºæ¥äºï¼å·²ç»å°æ°æ®åºä¸ç¬¬äºæ¡çç¨æ·åä¿®æ¹ä¸ºmypythonäºï¼ç¨çå°±æ¯updateè¯å¥ã ä¸è¿ï¼è¦ççå®ç°å¨æ°æ®åºä¸æ´æ°ï¼è¿è¦è¿è¡ï¼ >>> conn.commit() è¿å°±å¤§äºå®åäºã