本文介紹Python3使用PyMySQL連接資料庫,並實作簡單的增刪改查。具有很好的參考價值。以下跟著小編一起來看看吧
本文介紹Python3使用PyMySQL連接資料庫,並實作簡單的增刪改查。
什麼是PyMySQL?
PyMySQL是Python3.x版本中用來連接MySQL伺服器的一個函式庫,Python2.x中則是使用mysqldb。
PyMySQL安裝
在使用PyMySQL之前,我們需要先確保PyMySQL已經安裝。
PyMySQL下載網址:https://github.com/PyMySQL/PyMySQL。
如果還未安裝,我們可以使用以下命令安裝最新版的PyMySQL:
$ pip install PyMySQL
如果你的系統不支持pip指令,可以使用以下方式安裝:
1、使用git指令下載安裝套件安裝(你也可以手動下載):
$ git clone https://github.com/PyMySQL/PyMySQL $ cd PyMySQL $ python3 setup.py install
2、如果需要製定版本號,可以使用curl指令來安裝:
$ # X.X 为PyMySQL 的版本号 $ curl -L https://github.com/PyMySQL/PyMySQL/tarball/pymysql-X.X | tar xz $ cd PyMySQL* $ python3 setup.py install
注意:請確保您有root權限來安裝上述模組。
資料庫連線
連線資料庫前,請先確認以下事項:
- ##您已經建立資料庫TESTDB
- 在TESTDB資料庫中您已經建立了表EMPLOYEE
- #EMPLOYEE表欄位為FIRST_NAME,LAST_NAME,AGE,SEX和INCOME
- 連接資料庫TESTDB使用的使用者名稱為“testuser”,密碼為“test123”,你可以自己設定或直接使用root使用者名稱及其密碼,Mysql資料庫使用者授權請使用Grant指令
- 在你的機子上已經安裝了PyMySQL模組
#實例:
以下實例連結Mysql的TESTDB資料庫:#!/usr/bin/python3 __author__ = 'mayi' import pymysql # 打开数据库连接 db = pymysql.connect("localhost","testuser","test123","TESTDB" ) # 使用 cursor() 方法创建一个游标对象 cursor cursor = db.cursor() # 使用 execute() 方法执行 SQL 查询 cursor.execute("SELECT VERSION()") # 使用 fetchone() 方法获取单条数据. data = cursor.fetchone() print ("Database version : %s " % data) # 关闭数据库连接 db.close()
建立資料庫表格
如果資料庫連線存在我們可以使用execute()方法來為資料庫建立資料表,如下所示建立表格EMPLOYEE:#!/usr/bin/python3 __author__ = 'mayi' import pymysql # 开数据库连接 db = pymysql.connect("localhost","testuser","test123","TESTDB" ) # 使用 cursor() 方法创建一个游标对象 cursor cursor = db.cursor() # 使用 execute() 方法执行 SQL,如果表存在则删除 cursor.execute("DROP TABLE IF EXISTS EMPLOYEE") # 使用预处理语句创建表 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()
資料庫插入操作
以下實例使用執行SQL Insert語句向表EMPLOYEE插入記錄:#!/usr/bin/python3 __author__ = 'mayi' import pymysql # 打开数据库连接 db = pymysql.connect("localhost","testuser","test123","TESTDB" ) # 使用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: # 如果发生错误则回滚 db.rollback() # 关闭数据库连接 db.close()以上範例也可以寫成如下形式:
#!/usr/bin/python3 __author__ = 'mayi' import pymysql # 打开数据库连接 db = pymysql.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) # 执行sql语句 db.commit() except: # 发生错误时回滚 db.rollback() # 关闭数据库连接 db.close()
資料庫查詢操作
Python查詢Mysql使用fetchone()方法取得單一數據,使用fetchall()方法取得多個資料。- fetchone():此方法取得下一個查詢結果集。結果集是一個物件
- fetchall():接收全部的回傳結果行
- rowcount:這是一個唯讀屬性,並且傳回執行execute()方法後影響的行數
實例:
查詢EMPLOYEE表中salary(薪資)欄位大於1000的所有數據:#!/usr/bin/python3 __author__ = 'mayi' import pymysql # 打开数据库连接 db = pymysql.connect("localhost","testuser","test123","TESTDB" ) # 使用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()
資料庫更新操作
更新作業用於更新資料表的數據,以下實例將TESTDB表中的SEX欄位全部修改為'M',AGE欄位遞增1:#!/usr/bin/python3 __author__ = 'mayi' import pymysql # 打开数据库连接 db = pymysql.connect("localhost","testuser","test123","TESTDB" ) # 使用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()
刪除操作
刪除操作用於刪除資料表中的數據,以下實例示範了刪除資料表EMPLOYEE中AGE大於20的所有資料:#!/usr/bin/python3 __author__ = 'mayi' import pymysql # 打开数据库连接 db = pymysql.connect("localhost","testuser","test123","TESTDB" ) # 使用cursor()方法获取操作游标 cursor = db.cursor() # SQL 删除语句 sql = "DELETE FROM EMPLOYEE WHERE AGE > '%d'" % (20) try: # 执行SQL语句 cursor.execute(sql) # 提交修改 db.commit() except: # 发生错误时回滚 db.rollback() # 关闭连接 db.close()
執行交易
交易機制可以確保資料一致性。 交易應該具有4個屬性:原子性、一致性、隔離性、持久性。這四個屬性通常稱為ACID特性。- 原子性(atomicity)。一個事務是一個不可分割的工作單位,事務中包含的諸操作要么都做,要么都不做。
- 一致性(consistency)。事務必須是使資料庫從一個一致性狀態變成另一個一致性狀態。一致性與原子性是密切相關的。
- 隔離性(isolation)。一個事務的執行不能被其他事務幹擾。即一個事務內部的操作及使用的資料對並發的其他事務是隔離的,並發執行的各個事務之間不能互相干擾。
- 持久性(durability)。持續性也稱為永久性(permanence),指一個事務一旦提交,它對資料庫中資料的改變就應該是永久性的。接下來的其他操作或故障不應該對其有任何影響。
實例
# SQL删除记录语句 sql = "DELETE FROM EMPLOYEE WHERE AGE > '%d'" % (20) try: # 执行SQL语句 cursor.execute(sql) # 向数据库提交 db.commit() except: # 发生错误时回滚 db.rollback()對於支援交易的資料庫,在Python資料庫程式設計中,當遊標建立之時,就自動開始了一個隱形的資料庫事務。 commit()方法遊標的所有更新操作,rollback()方法回滾目前遊標的所有操作。每一個方法都開始了一個新的事務。
錯誤處理#
異常 | 描述 |
#Warning | 當有嚴重警告時觸發,例如插入資料是被截斷等等。必須是StandardError的子類別。 |
Error | 警告以外所有其他錯誤類別。必須是StandardError的子類別。 |
InterfaceError | 當有資料庫介面模組本身的錯誤(而不是資料庫的錯誤)發生時觸發。必須是Error的子類別。 |
DatabaseError | 和資料庫相關的錯誤發生時觸發。必須是Error的子類別。 |
DataError | 當有資料處理時的錯誤發生時觸發,例如:除零錯誤,資料超範圍等等。必須是DatabaseError的子類別。 |
OperationalError | 指非使用者控制的,而是在操作資料庫時發生的錯誤。例如:連線意外斷開、資料庫名稱未找到、交易處理失敗、記憶體分配錯誤等等操作資料庫是發生的錯誤。必須是DatabaseError的子類別。 |
IntegrityError | 完整性相關的錯誤,例如外鍵檢查失敗等。必須是DatabaseError子類別。 |
InternamError | 資料庫的內部錯誤,例如遊標(cursor)失效了、交易同步失敗等等。必須是DatabaseError子類別。 |
ProgrammingError | 程式錯誤,例如資料表(table)找不到或已經存在、SQL語句語法錯誤、參數數量錯誤等等。必須是DatabaseError的子類別。 |
NotSupportedError | 不支援錯誤,指使用了資料庫不支援的函數或API等。例如在連線物件上使用rollback()函數,然而資料庫並不支援交易或交易已關閉。必須是DatabaseError的子類別。 |
以上是Python對MySQL資料操作的實例詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

Inpython,YouAppendElementStoAlistusingTheAppend()方法。 1)useappend()forsingleelements:my_list.append(4).2)useextend()orextend()或= formultiplelements:my_list.extend.extend(emote_list)ormy_list = [4,5,6] .3)useInsert()forspefificpositions:my_list.insert(1,5).beaware

調試shebang問題的方法包括:1.檢查shebang行確保是腳本首行且無前置空格;2.驗證解釋器路徑是否正確;3.直接調用解釋器運行腳本以隔離shebang問題;4.使用strace或truss跟踪系統調用;5.檢查環境變量對shebang的影響。

pythonlistscanbemanipulationusseveralmethodstoremovelements:1)theremove()MethodRemovestHefirStocCurrenceOfAstePecificiedValue.2)thepop()thepop()methodRemovesandReturnturnturnturnsanaNelementAgivenIndex.3)

pythristssupportnumeroferations:1)addingElementSwithAppend(),Extend(),andInsert()。 2)emovingItemSusingRemove(),pop(),andclear(),and clear()。 3)訪問andModifyingandmodifyingwithIndexingandSlicing.4)

使用NumPy創建多維數組可以通過以下步驟實現:1)使用numpy.array()函數創建數組,例如np.array([[1,2,3],[4,5,6]])創建2D數組;2)使用np.zeros(),np.ones(),np.random.random()等函數創建特定值填充的數組;3)理解數組的shape和size屬性,確保子數組長度一致,避免錯誤;4)使用np.reshape()函數改變數組形狀;5)注意內存使用,確保代碼清晰高效。

播放innumpyisamethodtoperformoperationsonArraySofDifferentsHapesbyAutapityallate AligningThem.itSimplifififiesCode,增強可讀性,和Boostsperformance.Shere'shore'showitworks:1)較小的ArraySaraySaraysAraySaraySaraySaraySarePaddedDedWiteWithOnestOmatchDimentions.2)

forpythondataTastorage,choselistsforflexibilityWithMixedDatatypes,array.ArrayFormeMory-effficityHomogeneousnumericalData,andnumpyArraysForAdvancedNumericalComputing.listsareversareversareversareversArversatilebutlessEbutlesseftlesseftlesseftlessforefforefforefforefforefforefforefforefforefforlargenumerdataSets; arrayoffray.array.array.array.array.array.ersersamiddreddregro


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

Atom編輯器mac版下載
最受歡迎的的開源編輯器

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。