摘要:模塊安裝系統報錯安裝如果是系統,則需要先安裝服務。使用字典形式返回數據執行命令,并不會直接打印可以使用來讀取。
Python MySQLdb模塊 安裝
系統: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讀取執行結果的方法有:
fetchall() 把所有的都讀出來
fetchmany(n) 輸出指定數量n的行
fetchone() 只返回第一條結果
fetchone() 一次只返回一條結果,下次返回第二條,和文件的readlines類似
對應的也會有指針的概念,scroll()可以指定讀取的位置
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
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/40889.html
摘要:模塊提供的是類似于接口的,而模塊在基礎上又做了進一步封裝,使之符合的數據庫規范。的數據庫規范建議了種不同的方式來構造,只支持其中的一種,代碼類似于的格式化操作。提交修改,回滾。異常發生時,調用進行回滾。 NOTE(2017-11-18): MySQLdb 不支持 Python 3,而 Python 3 是主流,所以就沒有學習的必要了。 環境:MySQL 5.6.27, Ubuntu 1...
摘要:使用安裝報錯信息中有這兩行,沒有命令先找下這個命令在哪里,查到是下命令。解決方法添加一個軟鏈接,將命令放到環境變量下然后再執行安裝命令看到安裝提示有個警告,安裝的版本是檢測安裝是否成功使用方法來檢測模塊是否安裝。 使用easy_install安裝 sudo easy_install MySQL-python 報錯信息中有這兩行,沒有mysql_config命令 sh: mysql_co...
摘要:一普通連接方法使用模塊普通方式連接。返回結果表示影響的行數。查詢時不需要操作,插入更新刪除時需要提交。模塊點此下載類繼承自,表示一個新的連接池。如果需要新的連接池,按照如下格式新增即可。一個連接池可同時提供多個實例對象。 一、普通 MySQL 連接方法 ??使用模塊 MySQLdb 普通方式連接。 #!/usr/bin/env python # _*_ coding:utf-8 _*_...
閱讀 1644·2021-11-24 09:39
閱讀 3082·2021-11-22 15:24
閱讀 3090·2021-10-26 09:51
閱讀 3275·2021-10-19 11:46
閱讀 2890·2019-08-30 15:44
閱讀 2216·2019-08-29 15:30
閱讀 2536·2019-08-29 15:05
閱讀 772·2019-08-29 10:55