日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

python中mysqldb模块_python中MySQLdb模块用法实例

發布時間:2024/7/19 数据库 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python中mysqldb模块_python中MySQLdb模块用法实例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文實例講述了python中MySQLdb模塊用法。分享給大家供大家參考。具體用法分析如下:

MySQLdb其實有點像php或asp中連接數據庫的一個模式了,只是MySQLdb是針對mysql連接了接口,我們可以在python中連接MySQLdb來實現數據的各種操作。

python連接mysql的方案有oursql、PyMySQL、 myconnpy、MySQL Connector 等,不過本篇要說的確是另外一個類庫MySQLdb,MySQLdb 是用于Python鏈接Mysql數據庫的接口,它實現了 Python 數據庫 API 規范 V2.0,基于 MySQL C API 上建立的??梢詮?#xff1a;https://pypi.python.org/pypi/MySQL-python 進行獲取和安裝,而且很多發行版的linux源里都有該模塊,可以直接通過源安裝。

一、數據庫連接

MySQLdb提供了connect方法用來和數據庫建立連接,接收數個參數,返回連接對象:

復制代碼 代碼如下:

conn=MySQLdb.connect(host="localhost",user="root",passwd="jb51",db="test",charset="utf8")

比較常用的參數包括:

host:數據庫主機名.默認是用本地主機

user:數據庫登陸名.默認是當前用戶

passwd:數據庫登陸的秘密.默認為空

db:要使用的數據庫名.沒有默認值

port:MySQL服務使用的TCP端口.默認是3306

charset:數據庫編碼

更多關于參數的信息可以查這里 http://mysql-python.sourceforge.net/MySQLdb.html

然后,這個連接對象也提供了對事務操作的支持,標準的方法:

commit() 提交

rollback() 回滾

看一個簡單的查詢示例如下:

復制代碼 代碼如下:

#!/usr/bin/python

# encoding: utf-8

import MySQLdb

# 打開數據庫連接

db = MySQLdb.connect("localhost","root","361way","test" )

# 使用cursor()方法獲取操作游標

cursor = db.cursor()

# 使用execute方法執行SQL語句

cursor.execute("SELECT VERSION()")

# 使用 fetchone() 方法獲取一條數據庫。

data = cursor.fetchone()

print "Database version : %s " % data

# 關閉數據庫連接

db.close()

腳本執行結果如下:

Database version : 5.5.40

二、cursor方法執行與返回值

cursor方法提供兩類操作:1.執行命令,2.接收返回值 。

cursor用來執行命令的方法

復制代碼 代碼如下:

//用來執行存儲過程,接收的參數為存儲過程名和參數列表,返回值為受影響的行數

callproc(self, procname, args)

//執行單條sql語句,接收的參數為sql語句本身和使用的參數列表,返回值為受影響的行數

execute(self, query, args)

//執行單挑sql語句,但是重復執行參數列表里的參數,返回值為受影響的行數

executemany(self, query, args)

//移動到下一個結果集

nextset(self)

cursor用來接收返回值的方法

//接收全部的返回結果行.

fetchall(self)

//接收size條返回結果行.如果size的值大于返回的結果行的數量,則會返回cursor.arraysize條數據

fetchmany(self, size=None)

//返回一條結果行

fetchone(self)

//移動指針到某一行.如果mode='relative',則表示從當前所在行移動value條,如果mode='absolute',則表示從結果集的第一行移動value條

scroll(self, value, mode='relative')

//這是一個只讀屬性,并返回執行execute()方法后影響的行數

rowcount

三、數據庫操作

1、創建database tables

如果數據庫連接存在我們可以使用execute()方法來為數據庫創建表,如下所示創建表EMPLOYEE:

復制代碼 代碼如下:

#!/usr/bin/python

# encoding: utf-8

import MySQLdb

# 打開數據庫連接

db = MySQLdb.connect("localhost","root","361way","test" )

# 使用cursor()方法獲取操作游標

cursor = db.cursor()

# 如果數據表已經存在使用 execute() 方法刪除表。

cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")

# 創建數據表SQL語句

sql = """CREATE TABLE EMPLOYEE (

FIRST_NAME? CHAR(20) NOT NULL,

LAST_NAME? CHAR(20),

AGE INT,

SEX CHAR(1),

INCOME FLOAT )"""

cursor.execute(sql)

# 關閉數據庫連接

db.close()

2、數據庫插入操作

復制代碼 代碼如下:

#!/usr/bin/python

# encoding: utf-8

import MySQLdb

# 打開數據庫連接

db = MySQLdb.connect("localhost","root","361way","test" )

# 使用cursor()方法獲取操作游標

cursor = db.cursor()

# SQL 插入語句

sql = """INSERT INTO EMPLOYEE(FIRST_NAME,

LAST_NAME, AGE, SEX, INCOME)

VALUES ('Mac', 'Mohan', 20, 'M', 2000)"""

try:

# 執行sql語句

cursor.execute(sql)

# 提交到數據庫執行

db.commit()

except:

# Rollback in case there is any error

db.rollback()

# 關閉數據庫連接

db.close()

這里是一個單sql 執行的示例,cursor.executemany的用法感興趣的讀者可以參看相關的aws主機資產管理系統示例。

上例也可以寫成通過占位符傳參的方式進行執行,如下:

復制代碼 代碼如下:

#!/usr/bin/python

# encoding: utf-8

import MySQLdb

# 打開數據庫連接

db = MySQLdb.connect("localhost","testuser","test123","TESTDB" )

# 使用cursor()方法獲取操作游標

cursor = db.cursor()

# SQL 插入語句

sql = "INSERT INTO EMPLOYEE(FIRST_NAME, \

LAST_NAME, AGE, SEX, INCOME) \

VALUES ('%s', '%s', '%d', '%c', '%d' )" % \

('Mac', 'Mohan', 20, 'M', 2000)

try:

# 執行sql語句

cursor.execute(sql)

# 提交到數據庫執行

db.commit()

except:

# 發生錯誤時回滾

db.rollback()

# 關閉數據庫連接

db.close()

也可以以變量的方式傳遞參數,如下:

復制代碼 代碼如下:

..................................

user_id = "test"

password = "password123"

con.execute('insert into Login values("%s", "%s")' % \

(user_id, password))

..................................

3、數據庫查詢操作

以查詢EMPLOYEE表中salary(工資)字段大于1000的所有數據為例:

復制代碼 代碼如下:

#!/usr/bin/python

# encoding: utf-8

import MySQLdb

# 打開數據庫連接

db = MySQLdb.connect("localhost","root","361way","test" )

# 使用cursor()方法獲取操作游標

cursor = db.cursor()

# SQL 查詢語句

sql = "SELECT * FROM EMPLOYEE \

WHERE INCOME > '%d'" % (1000)

try:

# 執行SQL語句

cursor.execute(sql)

# 獲取所有記錄列表

results = cursor.fetchall()

for row in results:

fname = row[0]

lname = row[1]

age = row[2]

sex = row[3]

income = row[4]

# 打印結果

print "fname=%s,lname=%s,age=%d,sex=%s,income=%d" % \

(fname, lname, age, sex, income )

except:

print "Error: unable to fecth data"

# 關閉數據庫連接

db.close()

以上腳本執行結果如下:

fname=Mac, lname=Mohan, age=20, sex=M, income=2000

4、數據庫更新操作

更新操作用于更新數據表的的數據,以下實例將 test表中的 SEX 字段全部修改為 'M',AGE 字段遞增1:

復制代碼 代碼如下:

# encoding: utf-8

#!/usr/bin/python

import MySQLdb

# 打開數據庫連接

db = MySQLdb.connect("localhost","root","361way","test" )

# 使用cursor()方法獲取操作游標

cursor = db.cursor()

# SQL 更新語句

sql = "UPDATE EMPLOYEE SET AGE = AGE + 1

WHERE SEX = '%c'" % ('M')

try:

# 執行SQL語句

cursor.execute(sql)

# 提交到數據庫執行

db.commit()

except:

# 發生錯誤時回滾

db.rollback()

# 關閉數據庫連接

db.close()

5、執行事務

事務機制可以確保數據一致性。事務應該具有4個屬性:原子性、一致性、隔離性、持久性。這四個屬性通常稱為ACID特性。

① 原子性(atomicity)。一個事務是一個不可分割的工作單位,事務中包括的諸操作要么都做,要么都不做。

② 一致性(consistency)。事務必須是使數據庫從一個一致性狀態變到另一個一致性狀態。一致性與原子性是密切相關的。

③ 隔離性(isolation)。一個事務的執行不能被其他事務干擾。即一個事務內部的操作及使用的數據對并發的其他事務是隔離的,并發執行的各個事務之間不能互相干擾。

④ 持久性(durability)。持續性也稱永久性(permanence),指一個事務一旦提交,它對數據庫中數據的改變就應該是永久性的。接下來的其他操作或故障不應該對其有任何影響。

Python DB API 2.0 的事務提供了兩個方法 commit 或 rollback。實例:

復制代碼 代碼如下:

# SQL刪除記錄語句

sql = "DELETE FROM EMPLOYEE WHERE AGE > '%d'" % (20)

try:

# 執行SQL語句

cursor.execute(sql)

# 向數據庫提交

db.commit()

except:

# 發生錯誤時回滾

db.rollback()

對于支持事務的數據庫, 在Python數據庫編程中,當游標建立之時,就自動開始了一個隱形的數據庫事務。commit()方法游標的所有更新操作,rollback()方法回滾當前游標的所有操作。每一個方法都開始了一個新的事務。

希望本文所述對大家的Python程序設計有所幫助。

本文標題: python中MySQLdb模塊用法實例

本文地址: http://www.cppcns.com/shujuku/mysql/115899.html

總結

以上是生活随笔為你收集整理的python中mysqldb模块_python中MySQLdb模块用法实例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 人人妻人人澡人人爽人人dvd | 97香蕉久久超级碰碰高清版 | 操碰视频 | 老色驴综合网 | 伊人精品影院 | 人人妻人人爽人人澡人人精品 | 人妻熟人中文字幕一区二区 | 午夜激情国产 | 欧洲亚洲激情 | 亚洲天堂中文字幕 | 精品国产欧美一区二区三区成人 | 久久久91精品国产一区二区三区 | 最新中文字幕第一页 | 欧美影院一区二区 | 日韩人成 | 横恋母在线观看 | 久久久国产精华液 | 丁香六月色婷婷 | 久久国产三级 | 91丨porny丨首页 | 国产精品亚洲一区二区 | 青草视屏| 亚洲一区和二区 | 免费黄色网页 | 91成人免费在线视频 | 欧美日本在线视频 | 久久精品黄 | www欧美| 中文字幕在线网站 | 成人午夜小视频 | 美女又黄又免费的视频 | 国产丝袜视频在线 | 午夜精品久久久久久久99黑人 | 男同互操gay射视频在线看 | 欧美午夜不卡 | 天堂网免费视频 | 一区二区福利 | 校霸被c到爽夹震蛋上课高潮 | 性一交一乱一色一视频麻豆 | 精品国产亚洲一区二区麻豆 | 欧美一级啪啪 | 91精品美女| www免费网站在线观看 | 免费一级毛片麻豆精品 | 波多野结衣久久久久 | 亚洲青色在线 | 亚洲av无码久久精品狠狠爱浪潮 | 国产美女自慰在线观看 | 国产精品久久久久久久久免费软件 | 亚洲日本欧美 | 亚洲av激情无码专区在线播放 | 四虎网站 | 可以免费观看av的网站 | 国产高清精品一区二区三区 | 红杏出墙记| 久久99精品国产麻豆91樱花 | 操三八男人的天堂 | 天天5g天天爽免费观看 | wwwav在线| 国内自拍在线 | 欧美乱大交xxxxx潮喷l头像 | 亚洲精品永久免费 | 91狠狠| 欧美专区视频 | 刘亦菲久久免费一区二区 | 好男人www社区在线视频夜恋 | proumb性欧美在线观看 | 成av人片一区二区三区久久 | 精品国产欧美一区二区 | 超碰97人 | 丁香六月综合 | 激情五月婷婷在线 | 91小视频在线 | 重口味av | 国产com| 高潮毛片无遮挡高清免费 | 欧美婷婷精品激情 | 九九热视频在线 | 久久久精品人妻av一区二区三区 | 毛片在线免费视频 | 粗大的内捧猛烈进出在线视频 | 久久一本精品 | 国产性生活毛片 | 亚洲 欧美 自拍偷拍 | 97激情| 大黄毛片 | 苍井空浴缸大战猛男120分钟 | 精品一区二区三区欧美 | 暖暖成人免费视频 | 少妇精品久久久一区二区三区 | 日本三级吃奶头添泬无码苍井空 | 男女日皮视频 | 精品国产自在精品国产精小说 | 天天天天天干 | 国产一区二区欧美 | 日韩精品短片 | 超黄网站在线观看 | 日韩免费高清视频 | 亚洲欧洲一区 |