欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

第十三章Python數(shù)據(jù)庫編程

本章節(jié)講解Python操作數(shù)據(jù)庫,完成簡單的增刪改查工作,以MySQL數(shù)據(jù)庫為例。

創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比金水網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式金水網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋金水地區(qū)。費用合理售后完善,10多年實體公司更值得信賴。

Python的MySQL數(shù)據(jù)庫操作模塊叫MySQLdb,需要額外的安裝下。

通過pip工具安裝:pip install MySQLdb

MySQLdb模塊,我們主要就用到連接數(shù)據(jù)庫的方法MySQLdb.Connect(),連接上數(shù)據(jù)庫后,再使用一些方法做相應(yīng)的操作。

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()提交事務(wù)。對支持事務(wù)的數(shù)據(jù)庫和表,如果提交修改操作,不適用這個方法,則不會寫到數(shù)據(jù)庫中
rollback()事務(wù)回滾。對支持事務(wù)的數(shù)據(jù)庫和表,如果執(zhí)行此方法,則回滾當前事務(wù)。在沒有commit()前提下。
cursor([cursorclass])創(chuàng)建一個游標對象。所有的sql語句的執(zhí)行都要在游標對象下進行。MySQL本身不支持游標,MySQLdb模塊對其游標進行了仿真。

游標對象也提供了幾種方法:

close()關(guān)閉游標
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()  # 提交事務(wù),寫入到數(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變量是一個包含多元組的列表,每個元組對應(yīng)著每條記錄。當查詢多條記錄時,使用此方法,可有效提高插入效率。

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é)果,并增加了異常處理。

文章題目:第十三章Python數(shù)據(jù)庫編程
網(wǎng)頁URL:http://chinadenli.net/article4/jhgjie.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計公司用戶體驗網(wǎng)站收錄網(wǎng)站排名品牌網(wǎng)站設(shè)計

廣告

聲明:本網(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)

綿陽服務(wù)器托管