本章節(jié)講解Python操作數(shù)據(jù)庫,完成簡單的增刪改查工作,以MySQL數(shù)據(jù)庫為例。
成都創(chuàng)新互聯(lián)公司是一家專注于成都網(wǎng)站設計、網(wǎng)站建設與策劃設計,北川羌族網(wǎng)站建設哪家好?成都創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設十余年,網(wǎng)設計領域的專業(yè)建站公司;建站業(yè)務涵蓋:北川羌族等地區(qū)。北川羌族做網(wǎng)站價格咨詢:18982081108Python的MySQL數(shù)據(jù)庫操作模塊叫MySQLdb,需要額外的安裝下。
通過pip工具安裝:pip install MySQLdb
MySQLdb模塊,我們主要就用到連接數(shù)據(jù)庫的方法MySQLdb.Connect(),連接上數(shù)據(jù)庫后,再使用一些方法做相應的操作。
MySQLdb.Connect(parameters...)方法提供了以下一些常用的參數(shù):
參數(shù) | 描述 |
host | 數(shù)據(jù)庫地址 |
user | 數(shù)據(jù)庫用戶名, |
passwd | 數(shù)據(jù)庫密碼,默認為空 |
db | 數(shù)據(jù)庫庫名,沒有默認庫 |
port | 數(shù)據(jù)庫端口,默認3306 |
connect_timeout | 連接超時時間,秒為單位 |
use_unicode | 結(jié)果以unicode字符串返回 |
charset | 插入數(shù)據(jù)庫編碼 |
連接對象返回的connect()函數(shù):
commit() | 提交事務。對支持事務的數(shù)據(jù)庫和表,如果提交修改操作,不適用這個方法,則不會寫到數(shù)據(jù)庫中 |
rollback() | 事務回滾。對支持事務的數(shù)據(jù)庫和表,如果執(zhí)行此方法,則回滾當前事務。在沒有commit()前提下。 |
cursor([cursorclass]) | 創(chuàng)建一個游標對象。所有的sql語句的執(zhí)行都要在游標對象下進行。MySQL本身不支持游標,MySQLdb模塊對其游標進行了仿真。 |
游標對象也提供了幾種方法:
close() | 關閉游標 |
execute(sql) | 執(zhí)行sql語句 |
excutemany(sql) | 執(zhí)行多條sql語句 |
fetchone() | 從執(zhí)行結(jié)果中取第一條記錄 |
fetchmany(n) | 從執(zhí)行結(jié)果中取n條記錄 |
fetchall() | 從執(zhí)行結(jié)果中取所有記錄 |
scroll(self, value, mode='relative') | 游標滾動 |
博客地址:http://lizhenliang.blog.51cto.com
QQ群:323779636(Shell/Python運維開發(fā)群)
13.1 數(shù)據(jù)庫增刪改查
13.1.1 在test庫創(chuàng)建一張user表,并添加一條記錄
>>> conn = MySQLdb.Connect(host='192.168.1.244',user='root',passwd='QHyCTajI',db='test',charset='utf8') >>> cursor = conn.cursor() >>> sql = "create table user(id int,name varchar(30),password varchar(30))" >>> cursor.execute(sql) # 返回的數(shù)字是影響的行數(shù) 0L >>> sql = "insert into user(id,name,password) values('1','xiaoming','123456')" >>> cursor.execute(sql) 1L >>> conn.commit() # 提交事務,寫入到數(shù)據(jù)庫 >>> cursor.execute('show tables') # 查看創(chuàng)建的表 1L >>> cursor.fetchall() # 返回上一個游標執(zhí)行的所有結(jié)果,默認是以元組形式返回 ((u'user',),) >>> cursor.execute('select * from user') 1L >>> cursor.fetchall() ((1L, u'xiaoming', u'123456'),)13.1.2 插入多條數(shù)據(jù)
>>> sql = 'insert into user(id,name,password) values(%s,%s,%s)' >>> args = [('2','zhangsan','123456'), ('3','lisi','123456'),('4','wangwu','123456')] >>> cursor.executemany(sql, args) 3L >>> conn.commit() >>> sql = 'select * from user' >>> cursor.execute(sql) 4L >>> cursor.fetchall() ((1L, u'xiaoming', u'123456'), (2L, u'zhangsan', u'123456'), (3L, u'lisi', u'123456'), (4L, u'wangwu', u'123456'))args變量是一個包含多元組的列表,每個元組對應著每條記錄。當查詢多條記錄時,使用此方法,可有效提高插入效率。
13.1.3 刪除用戶名xiaoming的記錄
>>> sql = 'delete from user where name="xiaoming"' >>> cursor.execute(sql) 1L >>> conn.commit() >>> sql = 'select * from user' >>> cursor.execute(sql) 3L >>> cursor.fetchall() ((2L, u'zhangsan', u'123456'), (3L, u'lisi', u'123456'), (4L, u'wangwu', u'123456'))13.1.4 查詢記錄
>>> sql = 'select * from user' >>> cursor.execute(sql) 3L >>> cursor.fetchone() # 獲取第一條記錄 (2L, u'zhangsan', u'123456') >>> sql = 'select * from user' >>> cursor.execute(sql) 3L >>> cursor.fetchmany(2) # 獲取兩條記錄 ((2L, u'zhangsan', u'123456'), (3L, u'lisi', u'123456'))13.1.4 以字典形式返回結(jié)果
默認顯示是元組形式,要想返回字典形式,使得更易處理,就用到cursor([cursorclass])中的cusorclass參數(shù)。
傳入MySQLdb.cursors.DictCursor類:
>>> cursor = conn.cursor(MySQLdb.cursors.DictCursor) >>> sql = 'select * from user' >>> cursor.execute(sql) 3L >>> cursor.fetchall() ({'password': u'123456', 'id': 2L, 'name': u'zhangsan'}, {'password': u'123456', 'id': 3L, 'name': u'lisi'}, {'password': u'123456', 'id': 4L, 'name': u'wangwu'})13.2 遍歷查詢結(jié)果
#!/usr/bin/env python # -*- coding: utf-8 -*- import MySQLdb try: conn = MySQLdb.Connect(host='127.0.0.1', port=3306, user='root', passwd='123456', connect_timeout=3, charset='utf8') cursor = conn.cursor() sql = "select * from user" cursor.execute(sql) for i in cursor.fetchall(): print i except Exception, e: print ("Connection Error: " + str(e)) finally: conn.close() # python test.py (2L, u'zhangsan', u'123456') (3L, u'lisi', u'123456') (4L, u'wangwu', u'123456')使用for循環(huán)遍歷查詢結(jié)果,并增加了異常處理。
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
網(wǎng)頁題目:第十三章Python數(shù)據(jù)庫編程-創(chuàng)新互聯(lián)
URL標題:http://jinyejixie.com/article22/jgjjc.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供定制開發(fā)、標簽優(yōu)化、面包屑導航、App開發(fā)、響應式網(wǎng)站、網(wǎng)站設計
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容