當前位置:編程學習大全網 - 源碼下載 - 怎麽做才能連接mysql和python?

怎麽做才能連接mysql和python?

PyMySQL是什麽?

PyMySQL是Python3.x版本中用來連接MySQL服務器的庫,Python2中使用mysqldb。

PyMySQL遵循Python數據庫API v2.0規範,包含純Python MySQL客戶端庫。

PyMySQL安裝

在使用PyMySQL之前,我們需要確保安裝了PyMySQL。

PyMySQL下載地址:/PyMySQL/PyMySQL。

如果沒有,我們可以使用下面的命令來安裝最新版本的PyMySQL:

$ pip3安裝PyMySQL

如果您的系統不支持pip命令,您可以通過以下方式安裝它:

1.使用git命令下載並安裝安裝包(也可以手動下載):

$ git clone/PyMySQL/PyMySQL $ CD PyMySQL/$ python 3 setup . py install

2、如果需要制作版本號,可以使用curl命令來安裝:

$ # X.X是PyMySQL $ curl-l/PyMySQL/PyMySQL/tarball/PyMySQL-X . X | tarxz $ CD PyMySQL * $ python 3 setup . py install的版本號。

$ #現在您可以刪除PyMySQL*目錄了。

註意:請確保您擁有安裝上述模塊的root權限。

在安裝過程中,可能會出現錯誤消息“導入程序錯誤:沒有名為setuptools的模塊”,這意味著您尚未安裝安裝工具。可以訪問mit()除了:?#發生錯誤時回滾

?db.rollback()

#關閉數據庫連接db.close()

上面的例子也可以寫成下面的形式:

實例(Python 3.0以上)

#!/usr/bin/python3

導入pymysql

#打開數據庫連接db = pymysql.connect ("localhost "," testuser "," test123 "," testdb ")。

#使用cursor()方法獲取操作cursor cursor = db.cursor()。

# SQL插入語句SQL = " insert into employee(first _ name,\

?姓氏、年齡、性別、收入)\

?值(' %s ',' %s ',?%s,?' %s ',?%s)" % \?(' Mac ',' Mohan ',20,' M ',2000)試試:?#執行sql語句

?遊標. execute(sql)

?#執行sql語句

?db.commit()除外:?#發生錯誤時回滾

?db.rollback()

#關閉數據庫連接db.close()

以下代碼使用變量將參數傳遞到SQL語句中:

..................................user _ id = " test 123 " password = " password " con . execute(' insert into log in values(% s,%s)' % \(用戶標識,密碼))..................................

數據庫查詢操作

Python查詢Mysql使用fetchone()方法獲取單個數據,使用fetchall()方法獲取多個數據。

fetchone():?該方法獲取下壹個查詢結果集。結果集是壹個對象。

fetchall():?接收所有返回的結果行。

行數:?這是壹個只讀屬性,返回執行execute()方法後受影響的行數。

示例:

查詢雇員表中薪金字段大於1000的所有數據:

實例(Python 3.0以上)

#!/usr/bin/python3

導入pymysql

#打開數據庫連接db = pymysql.connect ("localhost "," testuser "," test123 "," testdb ")。

#使用cursor()方法獲取操作cursor cursor = db.cursor()。

# SQL查詢語句sql = "SELECT * FROM EMPLOYEE \

?其中收入& gt%s" % (1000)試試:?#執行SQL語句

?遊標. execute(sql)

?#獲取所有記錄的列表

?results = cursor.fetchall()

?對於結果中的行:fname = row[0]

?lname = row[1]

?年齡=行[2]

?sex = row[3]

?收入=第[4]行

?#打印結果

?print ("fname=%s,lname=%s,age=%s,sex=%s,income=%s" % \ (fname,lname,age,sex,income))除:?print("錯誤:無法獲取數據")

#關閉數據庫連接db.close()

上述腳本的執行結果如下:

fname=Mac,lname=Mohan,年齡=20,性別=M,收入=2000

數據庫更新操作

更新操作用於更新數據表中的數據。以下示例將TESTDB表中性別為“m”的年齡字段遞增1:

實例(Python 3.0以上)

#!/usr/bin/python3

導入pymysql

#打開數據庫連接db = pymysql.connect ("localhost "," testuser "," test123 "," testdb ")。

#使用cursor()方法獲取操作cursor cursor = db.cursor()。

# SQL update語句SQL = " update employee set age = age+1 where sex = ' % c ' "(' m ')try:?#執行SQL語句

?遊標. execute(sql)

?#提交給數據庫執行

?db.commit()除外:?#發生錯誤時回滾

?db.rollback()

#關閉數據庫連接db.close()

刪除操作

刪除操作用於刪除數據表中的數據。以下示例演示了如何刪除雇員數據表中年齡大於20的所有數據:

實例(Python 3.0以上)

#!/usr/bin/python3

導入pymysql

#打開數據庫連接db = pymysql.connect ("localhost "," testuser "," test123 "," testdb ")。

#使用cursor()方法獲取操作cursor cursor = db.cursor()。

# SQL delete語句SQL = " delete from employer where age >;%s" % (20)嘗試:?#執行SQL語句

?遊標. execute(sql)

?#提交更改

?db.commit()除外:?#發生錯誤時回滾

?db.rollback()

#關閉連接db.close()

行政事務

事務機制可以保證數據的壹致性。

壹個事務應該有四個屬性:原子性、壹致性、隔離性和持久性。這四個屬性通常被稱為酸性特征。

原子性(Atomicity)事務是壹個不可分割的工作單元,事務中包含的所有操作要麽完成,要麽不完成。

壹致性(壹致性)。事務必須將數據庫從壹種壹致狀態更改為另壹種壹致狀態。壹致性與原子性密切相關。

隔離(隔離)。壹個事務的執行不能受到其他事務的幹擾。也就是說,壹個事務中使用的操作和數據是與其他並發事務隔離的,並發事務之間不能互相幹擾。

耐用性(耐久性)。持久性,也稱為永久性,意味著壹旦提交了事務,它對數據庫中數據的更改應該是永久的。其他後續操作或失敗應該不會對其產生任何影響。

Python DB API 2.0中的事務提供了兩種方法:提交或回滾。

例子

實例(Python 3.0以上)

# SQL delete記錄語句SQL = " delete from employee where age >;%s" % (20)嘗試:?#執行SQL語句

?遊標. execute(sql)

?#提交到數據庫

?db.commit()除外:?#發生錯誤時回滾

?db.rollback()

對於支持事務的數據庫,在Python數據庫編程中,建立遊標時,會自動啟動壹個不可見的數據庫事務。

Commit()方法用於更新遊標的所有操作,rollback()方法用於回滾當前遊標的所有操作。每個方法都會啟動壹個新的事務。

錯誤處理

DB API中定義了壹些數據庫操作錯誤和異常,下表列出了這些錯誤和異常:

反常的

形容

當出現嚴重警告時,會觸發警告,例如,插入的數據被截斷等等。必須是StandardError的子類。

除錯誤警告之外的所有其他錯誤類別。必須是StandardError的子類。

當數據庫接口模塊本身出現錯誤(不是數據庫錯誤)時,會觸發InterfaceError。必須是Error的子類。

發生數據庫相關錯誤時觸發DatabaseError。必須是Error的子類。

DataError在數據處理中出現錯誤時觸發,如被零除錯誤、數據超出範圍等。必須是DatabaseError的子類。

OperationalError是指不受用戶控制,但在操作數據庫時發生的錯誤。例如,連接意外斷開、找不到數據庫名稱、事務失敗、內存分配錯誤等等。必須是DatabaseError的子類。

IntegrityError與完整性相關的錯誤,如外鍵檢查失敗等。必須是DatabaseError的子類。

InternalError數據庫中的內部錯誤,如遊標失敗、事務同步失敗等。必須是DatabaseError的子類。

ProgrammingError程序錯誤,如表未找到或已存在,SQL語句的語法錯誤,參數數目錯誤等。必須是DatabaseError的子類。

NotSupportedError不支持錯誤,指的是使用數據庫不支持的函數或API。例如,在。rollback()函數用於連接對象,但數據庫不支持事務或事務已關閉。必須是DatabaseError的子類。

  • 上一篇:景德鎮陶瓷學院科技藝術學院的網站是不是被人掛馬了啊?怎麽360老是提醒我不要進去?
  • 下一篇:股票莊家坐莊有什麽特點
  • copyright 2024編程學習大全網