系統:Ubuntu 14.04 MySQLdb $ pip install Mysql-python -> 報錯:EnvironmentError: mysql_config not found (安裝libmysqlclient-dev) $ apt-get install libmysqlclient-dev $ pip install Mysql-python 若是是MAC系統,則須要先安裝 mysql 服務。
fetchall()獲取數據
)import MySQLdb # 創建鏈接 conn = MySQLdb.connect(host='127.0.0.1', user='sate', db='dbtest', passwd='password') # 設置遊標 cur = conn.cursor() # 執行SQL命令,並不會直接返回查詢結果,而是返回SQL語句影響的行數 reCount = cur.execute('select * from Products;') print reCount # 輸出一個數字,是SQL影響的行數 # 使用 fetchall()方法獲取數據,循環輸出結果,以元祖的方式輸出 for data in cur.fetchall(): print data # 關閉鏈接 cur.close() conn.close() # 結果==》 5 ('00001', 'hilife') ('00002', 'GTL') ('00003', 'GLA') ('000004', 'TYA') ('000005', 'TUH')
import MySQLdb conn = MySQLdb.connect(host='127.0.0.1', user='sate', db='dbtest', passwd='password') cur = conn.cursor() # 定義SQL語句 sql = 'insert into Products(prod_id, prod_name) values(%s, %s);' # 定義數據 params = ('00002', 'GLA') reCount = cur.execute(sql, params) #爲了防止SQL注入,能夠使用該方法 conn.commit() #提交 cur.close() conn.close()
import MySQLdb conn = MySQLdb.connect(host='127.0.0.1', user='sate', db='dbtest', passwd='password') cur = conn.cursor() # 要批量插入的數據 li = [ ('000004', 'TYA'), ('000005', 'TUH') ] sql = 'insert into Products(prod_id, prod_name) values(%s, %s);' # 批量使用executemany reCount = cur.executemany(sql, li) #爲了防止SQL注入,能夠使用該方法 conn.commit() #提交 cur.close() conn.close()
import MySQLdb conn = MySQLdb.connect(host='127.0.0.1', user='zheng', db='satezheng', passwd='satezheng') # 使用字典形式返回數據 cur = conn.cursor(cursorclass = MySQLdb.cursors.DictCursor) # 執行命令,並不會直接打印,能夠使用fetchall來讀取。 reCount1 = cur.execute('select * from Products') print reCount1 # 輸出一個數字,是SQL影響的行數 for data in cur.fetchall(): print data cur.close() conn.close() # 結果==》 5 {'prod_name': 'hilife', 'prod_id': '00001'} {'prod_name': 'GLA', 'prod_id': '00002'} {'prod_name': 'GTL', 'prod_id': '00003'} {'prod_name': 'TYA', 'prod_id': '000004'} {'prod_name': 'TUH', 'prod_id': '000005'}
cursor
讀取執行結果的方法有:python
fetchall()
把全部的都讀出來fetchmany(n)
輸出指定數量n的行fetchone()
只返回第一條結果fetchone()
一次只返回一條結果,下次返回第二條,和文件的readlines
相似對應的也會有指針的概念,scroll()
能夠指定讀取的位置mysql
cur.scroll(0, mode='absolute') # 絕對指針, 0 就是指針的位置 cur.scroll(-1, mode='relative') # 相對指針, -1 指針位置向前移一位(指針位置-1)
import MySQLdb conn = MySQLdb.connect(host='127.0.0.1', user='zheng', db='satezheng', passwd='satezheng') cur = conn.cursor() reCount = cur.execute('select * from Products;') # 使用 fetchone()方法獲取數據 data = cur.fetchone() print data data = cur.fetchone() print data data = cur.fetchone() print data # 結果==》 ('00001', 'hilife') ('00002', 'GTL') ('00003', 'GLA') # 使用絕對指針時 ... data = cur.fetchone() print data data = cur.fetchone() print data cur.scroll(0, mode='absolute') # 將指針指向 0 data = cur.fetchone() print data # 結果==》 ('00001', 'hilife') ('00002', 'GTL') ('00001', 'hilife') # 使用相對指針 data = cur.fetchone() print data data = cur.fetchone() print data cur.scroll(-1, mode='relative') # 指針位置減1 data = cur.fetchone() print data # 結果==》 ('00001', 'hilife') ('00002', 'GTL') ('00002', 'GTL')
cur.lastrawid()
獲取自增id