- Python & MySQL 教程
- Python & MySQL - 首頁
- Python & MySQL - 概覽
- Python & MySQL - 環境設定
- Python & MySQL 示例
- Python & MySQL - 連線資料庫
- Python & MySQL - 建立資料庫
- Python & MySQL - 刪除資料庫
- Python & MySQL - 選擇資料庫
- Python & MySQL - 建立表
- Python & MySQL - 刪除表
- Python & MySQL - 插入記錄
- Python & MySQL - 查詢記錄
- Python & MySQL - 更新記錄
- Python & MySQL - 刪除記錄
- Python & MySQL - Where 子句
- Python & MySQL - Like 子句
- Python & MySQL - 資料排序
- Python & MySQL - 使用連線
- Python & MySQL - 執行事務
- Python & MySQL - 處理錯誤
- Python & MySQL 有用資源
- Python & MySQL - 快速指南
- Python & MySQL - 有用資源
- Python & MySQL - 討論
Python & MySQL - 快速指南
Python & MySQL - 概覽
Python 資料庫介面的標準是 Python DB-API。大多數 Python 資料庫介面都遵循此標準。
您可以為您的應用程式選擇合適的資料庫。Python 資料庫 API 支援各種資料庫伺服器,例如:
- GadFly
- mSQL
- MySQL
- PostgreSQL
- Microsoft SQL Server 2000
- Informix
- Interbase
- Oracle
- Sybase
以下是可用 Python 資料庫介面的列表:Python 資料庫介面和 API。您必須為需要訪問的每個資料庫下載單獨的 DB API 模組。例如,如果您需要訪問 Oracle 資料庫以及 MySQL 資料庫,則必須下載 Oracle 和 MySQL 資料庫模組。
DB API 提供了一個使用 Python 結構和語法儘可能工作的最小標準。此 API 包括以下內容:
- 匯入 API 模組。
- 獲取與資料庫的連線。
- 發出 SQL 語句和儲存過程。
- 關閉連線
MySQLdb
MySQLdb 是一個用於從 Python 連線到 MySQL 資料庫伺服器的介面。它實現了 Python 資料庫 API v2.0,並且構建在 MySQL C API 之上。
Python & MySQL - 環境設定
Python 可用於各種平臺,包括 Linux 和 Mac OS X。讓我們瞭解如何設定我們的 Python 環境。
本地環境設定
開啟一個終端視窗並鍵入“python”以瞭解它是否已安裝以及安裝了哪個版本。
- Unix(Solaris、Linux、FreeBSD、AIX、HP/UX、SunOS、IRIX 等)
- Win 9x/NT/2000
- Macintosh(Intel、PPC、68K)
- OS/2
- DOS(多個版本)
- PalmOS
- 諾基亞手機
- Windows CE
- Acorn/RISC OS
- BeOS
- Amiga
- VMS/OpenVMS
- QNX
- VxWorks
- Psion
- Python 也已移植到 Java 和 .NET 虛擬機器
獲取 Python
最新的原始碼、二進位制檔案、文件、新聞等可在 Python 官方網站上獲得 https://python.club.tw/
您可以從 https://python.club.tw/doc/ 下載 Python 文件。該文件以 HTML、PDF 和 PostScript 格式提供。
安裝 Python
Python 發行版可用於各種平臺。您只需要下載適用於您平臺的二進位制程式碼並安裝 Python。
如果您的平臺沒有提供二進位制程式碼,則需要一個 C 編譯器來手動編譯原始碼。編譯原始碼在您所需的安裝功能選擇方面提供了更大的靈活性。
以下是關於在各種平臺上安裝 Python 的快速概述:
Unix 和 Linux 安裝
以下是關於在 Unix/Linux 機器上安裝 Python 的簡單步驟。
開啟 Web 瀏覽器並轉到 https://python.club.tw/downloads/。
點選連結下載適用於 Unix/Linux 的壓縮原始碼。
下載並解壓縮檔案。
如果您想自定義某些選項,請編輯Modules/Setup檔案。
執行 ./configure 指令碼
make
make install
這會將 Python 安裝到標準位置/usr/local/bin,並將它的庫安裝到/usr/local/lib/pythonXX,其中 XX 是 Python 的版本。
Windows 安裝
以下是關於在 Windows 機器上安裝 Python 的步驟。
開啟 Web 瀏覽器並轉到 https://python.club.tw/downloads/。
點選連結獲取 Windows 安裝程式python-XYZ.msi檔案,其中 XYZ 是您需要安裝的版本。
要使用此安裝程式python-XYZ.msi,Windows 系統必須支援 Microsoft Installer 2.0。將安裝程式檔案儲存到本地計算機,然後執行它以瞭解您的計算機是否支援 MSI。
執行下載的檔案。這將開啟 Python 安裝嚮導,它非常易於使用。只需接受預設設定,等待安裝完成,然後就完成了。
Macintosh 安裝
最近的 Mac 附帶了 Python,但它可能已經過時幾年了。請參閱 https://python.club.tw/download/mac/,瞭解有關獲取最新版本以及支援在 Mac 上進行開發的其他工具的說明。對於 Mac OS X 10.3(2003 年釋出)之前的舊版 Mac OS,可以使用 MacPython。
Jack Jansen 維護它,您可以在他的網站上完全訪問所有文件:https://www.cwi.nl/~jack/macpython.html。您可以在其中找到 Mac OS 安裝的完整安裝詳細資訊。
設定 PATH
程式和其他可執行檔案可能位於許多目錄中,因此作業系統提供了一個搜尋路徑,其中列出了作業系統搜尋可執行檔案的目錄。
路徑儲存在環境變數中,環境變數是由作業系統維護的命名字串。此變數包含命令 shell 和其他程式可用的資訊。
path變數在 Unix 中命名為 PATH,在 Windows 中命名為 Path(Unix 區分大小寫;Windows 不區分大小寫)。
在 Mac OS 中,安裝程式處理路徑細節。要從任何特定目錄呼叫 Python 直譯器,您必須將 Python 目錄新增到您的路徑中。
在 Unix/Linux 上設定路徑
要在 Unix 中為特定會話將 Python 目錄新增到路徑中,請執行以下操作:
在 csh shell 中 - 鍵入 setenv PATH "$PATH:/usr/local/bin/python" 並按 Enter。
在 bash shell(Linux)中 - 鍵入 export PATH="$PATH:/usr/local/bin/python" 並按 Enter。
在 sh 或 ksh shell 中 - 鍵入 PATH="$PATH:/usr/local/bin/python" 並按 Enter。
注意 - /usr/local/bin/python 是 Python 目錄的路徑
在 Windows 上設定路徑
要在 Windows 中為特定會話將 Python 目錄新增到路徑中,請執行以下操作:
在命令提示符下 - 鍵入 path %path%;C:\Python 並按 Enter。
注意 - C:\Python 是 Python 目錄的路徑
Python 環境變數
以下是一些 Python 可以識別的重要環境變數:
安裝 MySQL 資料庫
當然,您最需要的是一個實際執行的資料庫,其中包含您可以查詢和修改的表。
MySQL DB:MySQL 是一個開源資料庫。您可以從 MySQL 官方網站 下載它。我們建議下載完整的 Windows 安裝程式。
此外,請下載並安裝 MySQL Administrator 以及 MySQL Query Browser。 這些是基於 GUI 的工具,可以使您的開發更加輕鬆。
最後,下載並解壓縮 MySQL Connector/J(MySQL JDBC 驅動程式)到一個方便的目錄中。在本教程中,我們假設您已將驅動程式安裝到 C:\Program Files\MySQL\mysql-connector-java-5.1.8 中。
相應地,將 CLASSPATH 變數設定為 C:\Program Files\MySQL\mysql-connector-java-5.1.8\mysql-connector-java-5.1.8-bin.jar。您的驅動程式版本可能會根據您的安裝而有所不同。
設定資料庫憑據
當我們安裝 MySQL 資料庫時,其管理員 ID 設定為 root,並且它允許您設定您選擇的密碼。
使用 root ID 和密碼,您可以建立另一個使用者 ID 和密碼,或者您可以將 root ID 和密碼用於您的 JDBC 應用程式。
有各種資料庫操作,例如資料庫建立和刪除,這些操作需要管理員 ID 和密碼。
對於其餘的 JDBC 教程,我們將使用 MySQL 資料庫,其中 ID 為 guest,密碼為 guest123。
如果您沒有足夠的許可權來建立新使用者,則可以請求您的資料庫管理員 (DBA) 為您建立一個使用者 ID 和密碼。
建立資料庫
要建立 TUTORIALSPOINT 資料庫,請使用以下步驟:
步驟 1
開啟一個 命令提示符 並更改到以下安裝目錄:
C:\> C:\>cd Program Files\MySQL\bin C:\Program Files\MySQL\bin>
注意:mysqld.exe 的路徑可能會因系統上 MySQL 的安裝位置而異。您還可以檢視有關如何啟動和停止資料庫伺服器的文件。
步驟 2
如果資料庫伺服器尚未執行,請執行以下命令啟動它。
C:\Program Files\MySQL\bin>mysqld C:\Program Files\MySQL\bin>
步驟 3
透過執行以下命令建立 TUTORIALSPOINT 資料庫:
C:\Program Files\MySQL\bin> mysqladmin create TUTORIALSPOINT -u guest -p Enter password: ******** C:\Program Files\MySQL\bin>
建立表
要建立 TUTORIALSPOINT 資料庫中的 Employees 表,請使用以下步驟:
步驟 1
開啟一個 命令提示符 並更改到以下安裝目錄:
C:\> C:\>cd Program Files\MySQL\bin C:\Program Files\MySQL\bin>
步驟 2
以以下方式登入資料庫:
C:\Program Files\MySQL\bin>mysql -u guest -p Enter password: ******** mysql>
步驟 3
以以下方式建立 Employees 表:
mysql> use TUTORIALSPOINT;
mysql> create table Employees
-> (
-> id int not null,
-> age int not null,
-> first varchar (255),
-> last varchar (255)
-> );
Query OK, 0 rows affected (0.08 sec)
mysql>
建立資料記錄
最後,您在 Employee 表中建立了一些記錄,如下所示:
mysql> INSERT INTO Employees VALUES (100, 18, 'Zara', 'Ali'); Query OK, 1 row affected (0.05 sec) mysql> INSERT INTO Employees VALUES (101, 25, 'Mahnaz', 'Fatma'); Query OK, 1 row affected (0.00 sec) mysql> INSERT INTO Employees VALUES (102, 30, 'Zaid', 'Khan'); Query OK, 1 row affected (0.00 sec) mysql> INSERT INTO Employees VALUES (103, 28, 'Sumit', 'Mittal'); Query OK, 1 row affected (0.00 sec) mysql>
要全面瞭解 MySQL 資料庫,請學習MySQL 教程。
MySQLdb
MySQLdb 是一個用於從 Python 連線到 MySQL 資料庫伺服器的介面。它實現了 Python 資料庫 API v2.0,並且構建在 MySQL C API 之上。
如何安裝 MySQLdb?
在繼續之前,請確保您的機器上已安裝 MySQLdb。只需在您的 Python 指令碼中鍵入以下內容並執行它:
#!/usr/bin/python import MySQLdb
如果它產生以下結果,則表示未安裝 MySQLdb 模組:
Traceback (most recent call last):
File "test.py", line 3, in <module>
import MySQLdb
ImportError: No module named MySQLdb
要安裝 MySQLdb 模組,請使用以下命令:
For Ubuntu, use the following command - $ sudo apt-get install python-pip python-dev libmysqlclient-dev For Fedora, use the following command - $ sudo dnf install python python-devel mysql-devel redhat-rpm-config gcc For Python command prompt, use the following command - pip install mysqlclient
注意 - 請確保您具有安裝上述模組的 root 許可權。
現在您可以開始使用 Python 進行實驗了。
Python & MySQL - 連線資料庫示例
Python MySQLdb 提供MySQLdb.connect()函式來開啟資料庫連線。此函式接受多個引數,並返回一個連線物件以執行資料庫操作。
語法
db = MySQLdb.connect(host, username, passwd, dbName, port, socket);
| 序號 | 引數 & 描述 |
|---|---|
| 1 |
host 可選 - 執行資料庫伺服器的主機名。如果未指定,則預設值為localhost:3306。 |
| 2 |
username 可選 - 訪問資料庫的使用者名稱。如果未指定,則預設為擁有伺服器程序的使用者名稱稱。 |
| 3 |
passwd 可選 - 訪問資料庫的使用者密碼。如果未指定,則預設為空密碼。 |
| 4 |
dbName 可選 - 要執行查詢的資料庫名稱。 |
| 5 |
port 可選 - 要嘗試連線到 MySQL 伺服器的埠號。 |
| 6 |
socket 可選 - 應使用的套接字或命名管道。 |
還有其他一些屬性。請參閱MySQLdb以獲取完整參考。
您可以隨時使用另一個連線物件函式close()斷開與 MySQL 資料庫的連線。
語法
db.close()
示例
嘗試以下示例以連線到 MySQL 伺服器:
複製並貼上以下示例作為 mysql_example.py:
#!/usr/bin/python
import MySQLdb
# Open database connection
db = MySQLdb.connect("localhost","root","root@123")
# prepare a cursor object using cursor() method
cursor = db.cursor()
# execute SQL query using execute() method.
cursor.execute("SELECT VERSION()")
# Fetch a single row using fetchone() method.
data = cursor.fetchone()
if data:
print('Version available: ', data)
else:
print('Version not retrieved.')
# disconnect from server
db.close()
輸出
使用 python 執行 mysql_example.py 指令碼並驗證輸出。
py mysql_example.py
Version available: ('8.0.23',)
Python & MySQL - 建立資料庫示例
Python 使用c.execute(q)函式建立或刪除 MySQL 資料庫,其中 c 是遊標,q 是要執行的查詢。
語法
# execute SQL query using execute() method. cursor.execute(sql)
| 序號 | 引數 & 描述 |
|---|---|
| 1 | $sql 必需 - 建立 MySQL 資料庫的 SQL 查詢。 |
示例
嘗試以下示例以建立資料庫:
複製並貼上以下示例作為 mysql_example.ty:
#!/usr/bin/python
import MySQLdb
# Open database connection
db = MySQLdb.connect("localhost","root","root@123")
# prepare a cursor object using cursor() method
cursor = db.cursor()
# execute SQL query using execute() method.
cursor.execute("CREATE DATABASE TUTORIALS")
print('Database created');
# disconnect from server
db.close()
輸出
使用 python 執行 mysql_example.py 指令碼並驗證輸出。
Database created
Python & MySQL - 刪除資料庫示例
Python 使用c.execute(q)函式建立或刪除 MySQL 資料庫,其中 c 是遊標,q 是要執行的查詢。
語法
# execute SQL query using execute() method. cursor.execute(sql)
| 序號 | 引數 & 描述 |
|---|---|
| 1 | $sql 必需 - 刪除 MySQL 資料庫的 SQL 查詢。 |
示例
嘗試以下示例以刪除資料庫:
複製並貼上以下示例作為 mysql_example.ty:
#!/usr/bin/python
import MySQLdb
# Open database connection
db = MySQLdb.connect("localhost","root","root@123")
# prepare a cursor object using cursor() method
cursor = db.cursor()
# execute SQL query using execute() method.
cursor.execute("DROP DATABASE TUTORIALS")
print('Database dropped');
# disconnect from server
db.close()
輸出
使用 python 執行 mysql_example.py 指令碼並驗證輸出。
Database dropped
Python & MySQL - 選擇資料庫示例
Python MySQLdb 提供MySQLdb.connect()函式來選擇資料庫。此函式接受多個引數,並返回一個連線物件以執行資料庫操作。
語法
db = MySQLdb.connect(host, username, passwd, dbName, port, socket);
| 序號 | 引數 & 描述 |
|---|---|
| 1 |
host 可選 - 執行資料庫伺服器的主機名。如果未指定,則預設值為localhost:3306。 |
| 2 |
username 可選 - 訪問資料庫的使用者名稱。如果未指定,則預設為擁有伺服器程序的使用者名稱稱。 |
| 3 |
passwd 可選 - 訪問資料庫的使用者密碼。如果未指定,則預設為空密碼。 |
| 4 |
dbName 可選 - 要執行查詢的資料庫名稱。 |
| 5 |
port 可選 - 要嘗試連線到 MySQL 伺服器的埠號。 |
| 6 |
socket 可選 - 應使用的套接字或命名管道。 |
您可以隨時使用另一個連線物件函式close()斷開與 MySQL 資料庫的連線。
語法
db.close()
示例
嘗試以下示例以連線到 MySQL 資料庫:
複製並貼上以下示例作為 mysql_example.py:
#!/usr/bin/python
import MySQLdb
# Open database connection
db = MySQLdb.connect("localhost","root","root@123", "TUTORIALS")
# prepare a cursor object using cursor() method
cursor = db.cursor()
# execute SQL query using execute() method.
cursor.execute("SELECT VERSION()")
# Fetch a single row using fetchone() method.
data = cursor.fetchone()
if data:
print('Version available: ', data)
else:
print('Version not retrieved.')
# disconnect from server
db.close()
輸出
使用 python 執行 mysql_example.py 指令碼並驗證輸出。
py mysql_example.py
Version available: ('8.0.23',)
Python & MySQL - 建立表
Python 使用c.execute(q)函式建立表,其中 c 是遊標,q 是要執行的查詢。
語法
# execute SQL query using execute() method. cursor.execute(sql)
| 序號 | 引數 & 描述 |
|---|---|
| 1 | $sql 必需 - 建立表的 SQL 查詢。 |
示例
嘗試以下示例以建立表:
複製並貼上以下示例作為 mysql_example.ty:
#!/usr/bin/python
import MySQLdb
# Open database connection
db = MySQLdb.connect("localhost","root","root@123", "TUTORIALS")
# prepare a cursor object using cursor() method
cursor = db.cursor()
sql = """CREATE TABLE tutorials_tbl(
tutorial_id INT NOT NULL AUTO_INCREMENT,
tutorial_title VARCHAR(100) NOT NULL,
tutorial_author VARCHAR(40) NOT NULL,
submission_date DATE,
PRIMARY KEY ( tutorial_id )); """;
# execute SQL query using execute() method.
cursor.execute(sql)
print('tutorials_tbl created')
# disconnect from server
db.close()
輸出
使用 python 執行 mysql_example.py 指令碼並驗證輸出。
tutorials_tbl created
Python & MySQL - 刪除表示例
Python 使用c.execute(q)函式刪除表,其中 c 是遊標,q 是要執行的刪除查詢。
語法
# execute SQL query using execute() method. cursor.execute(sql)
| 序號 | 引數 & 描述 |
|---|---|
| 1 | $sql 必需 - 刪除表的 SQL 查詢。 |
示例
嘗試以下示例以刪除表:
複製並貼上以下示例作為 mysql_example.ty:
#!/usr/bin/python
import MySQLdb
# Open database connection
db = MySQLdb.connect("localhost","root","root@123","TUTORIALS")
# prepare a cursor object using cursor() method
cursor = db.cursor()
# execute SQL query using execute() method.
cursor.execute("Drop Table tutorials_tbl")
print('Table dropped');
# disconnect from server
db.close()
輸出
使用 python 執行 mysql_example.py 指令碼並驗證輸出。
Table dropped
PHP & MySQL - 插入記錄示例
Python 使用c.execute(q)函式在表中插入記錄,其中 c 是遊標,q 是要執行的插入查詢。
語法
# execute SQL query using execute() method.
cursor.execute(sql)
# commit the record
db.commit()
# get the row id for inserted record
print("ID:", cursor.lastrowid)
# print the number of records inserted
print(mycursor.rowcount, "records inserted.")
| 序號 | 引數 & 描述 |
|---|---|
| 1 | $sql 必需 - 在表中插入記錄的 SQL 查詢。 |
示例
嘗試以下示例以在表中插入記錄:
複製並貼上以下示例作為 mysql_example.ty:
#!/usr/bin/python
import MySQLdb
# Open database connection
db = MySQLdb.connect("localhost","root","root@123", "TUTORIALS")
# prepare a cursor object using cursor() method
cursor = db.cursor()
sql = """INSERT INTO tutorials_tbl
(tutorial_title,tutorial_author, submission_date)
VALUES ('HTML 5', 'Robert', '2010-02-10'),
('Java', 'Julie', '2020-12-10'),
('JQuery', 'Julie', '2020-05-10')
"""
# execute SQL query using execute() method.
cursor.execute(sql)
# commit the record
db.commit()
# get the row id for inserted record
print("ID:", cursor.lastrowid)
# print the number of records inserted
print(cursor.rowcount, "records inserted.")
# disconnect from server
db.close()
輸出
使用 python 執行 mysql_example.py 指令碼並驗證輸出。
ID: 5 3 records inserted.
Python & MySQL - 選擇記錄示例
對任何資料庫執行選擇/讀取操作意味著從資料庫中獲取一些有用的資訊。
一旦建立了資料庫連線,您就可以對該資料庫進行查詢了。您可以使用fetchone()方法獲取單個記錄,或使用fetchall()方法從資料庫表中獲取多個值。
fetchone() - 它獲取查詢結果集的下一行。結果集是在使用遊標物件查詢表時返回的物件。
fetchall() - 它獲取結果集中的所有行。如果已從結果集中提取了一些行,則它將檢索結果集中剩餘的行。
rowcount - 這是一個只讀屬性,返回受 execute() 方法影響的行數。
語法
# execute SQL query using execute() method. cursor.execute(sql) result = cursor.fetchall() for record in result: print(record)
| 序號 | 引數 & 描述 |
|---|---|
| 1 | $sql 必需 - 從表中選擇記錄的 SQL 查詢。 |
示例
嘗試以下示例以從表中選擇記錄:
複製並貼上以下示例作為 mysql_example.ty:
#!/usr/bin/python
import MySQLdb
# Open database connection
db = MySQLdb.connect("localhost","root","root@123", "TUTORIALS")
# prepare a cursor object using cursor() method
cursor = db.cursor()
sql = "Select * from tutorials_tbl"
# execute SQL query using execute() method.
cursor.execute(sql)
# fetch all records from cursor
result = cursor.fetchall()
# iterate result and print records
for record in result:
print(record)
# disconnect from server
db.close()
輸出
使用 python 執行 mysql_example.py 指令碼並驗證輸出。
(1, 'HTML 5', 'Robert', datetime.date(2010, 2, 10)) (2, 'Java', 'Julie', datetime.date(2020, 12, 10)) (3, 'JQuery', 'Julie', datetime.date(2020, 5, 10))
Python & MySQL - 更新記錄示例
Python 使用c.execute(q)函式更新表中的記錄,其中 c 是遊標,q 是要執行的更新查詢。
語法
# execute SQL query using execute() method. cursor.execute(sql) cursor.commit() # get the record count updated print(mycursor.rowcount, "record(s) affected")
| 序號 | 引數 & 描述 |
|---|---|
| 1 | $sql 必需 - 在表中更新記錄的 SQL 查詢。 |
示例
嘗試以下示例以更新表中的記錄:
複製並貼上以下示例作為 mysql_example.ty:
#!/usr/bin/python
import MySQLdb
# Open database connection
db = MySQLdb.connect("localhost","root","root@123", "TUTORIALS")
# prepare a cursor object using cursor() method
cursor = db.cursor()
sql = "UPDATE tutorials_tbl set tutorial_title = "Learning Java" where tutorial_id = 2"
# execute SQL query using execute() method.
cursor.execute(sql)
db.commit()
# get the record count updated
print(cursor.rowcount, " record(s) affected")
# disconnect from server
db.close()
輸出
使用 python 執行 mysql_example.py 指令碼並驗證輸出。
1 record(s) affected
Python & MySQL - 刪除記錄示例
Python 使用c.execute(q)函式從表中刪除記錄,其中 c 是遊標,q 是要執行的刪除查詢。
語法
# execute SQL query using execute() method. cursor.execute(sql) cursor.commit() # get the record count updated print(mycursor.rowcount, "record(s) affected")
| 序號 | 引數 & 描述 |
|---|---|
| 1 | $sql 必需 - 在表中刪除記錄的 SQL 查詢。 |
示例
嘗試以下示例以在表中插入記錄:
複製並貼上以下示例作為 mysql_example.ty:
#!/usr/bin/python
import MySQLdb
# Open database connection
db = MySQLdb.connect("localhost","root","root@123", "TUTORIALS")
# prepare a cursor object using cursor() method
cursor = db.cursor()
sql = "Delete from tutorials_tbl where tutorial_id = 2"
# execute SQL query using execute() method.
cursor.execute(sql)
db.commit()
# get the record count updated
print(cursor.rowcount, " record(s) affected")
# disconnect from server
db.close()
輸出
使用 python 執行 mysql_example.py 指令碼並驗證輸出。
1 record(s) affected
Python & MySQL - Where 子句示例
Python 使用c.execute(q)函式使用 Where 子句有條件地從表中選擇記錄,其中 c 是遊標,q 是要執行的選擇查詢。
語法
# execute SQL query using execute() method. cursor.execute(sql) result = cursor.fetchall() for record in result: print(record)
| 序號 | 引數 & 描述 |
|---|---|
| 1 | $sql 必需 - 從表中選擇記錄的 SQL 查詢。 |
示例
嘗試以下示例以從表中選擇記錄:
複製並貼上以下示例作為 mysql_example.ty:
#!/usr/bin/python
import MySQLdb
# Open database connection
db = MySQLdb.connect("localhost","root","root@123", "TUTORIALS")
# prepare a cursor object using cursor() method
cursor = db.cursor()
sql = "Select * from tutorials_tbl Where tutorial_id = 3"
# execute SQL query using execute() method.
cursor.execute(sql)
# fetch all records from cursor
result = cursor.fetchall()
# iterate result and print records
for record in result:
print(record)
# disconnect from server
db.close()
輸出
使用 python 執行 mysql_example.py 指令碼並驗證輸出。
(3, 'JQuery', 'Julie', datetime.date(2020, 5, 10))
Python & MySQL - Like 子句示例
Python 使用c.execute(q)函式使用 Like 語句有條件地從表中選擇記錄,其中 c 是遊標,q 是要執行的選擇查詢。
語法
# execute SQL query using execute() method. cursor.execute(sql) result = cursor.fetchall() for record in result: print(record)
| 序號 | 引數 & 描述 |
|---|---|
| 1 | $sql 必需 - 使用 Like 語句從表中選擇記錄的 SQL 查詢。 |
示例
嘗試以下示例以使用 Like 語句從表中選擇記錄:
複製並貼上以下示例作為 mysql_example.ty:
#!/usr/bin/python
import MySQLdb
# Open database connection
db = MySQLdb.connect("localhost","root","root@123", "TUTORIALS")
# prepare a cursor object using cursor() method
cursor = db.cursor()
sql = "Select * from tutorials_tbl Where tutorial_title like 'J%'"
# execute SQL query using execute() method.
cursor.execute(sql)
# fetch all records from cursor
result = cursor.fetchall()
# iterate result and print records
for record in result:
print(record)
# disconnect from server
db.close()
輸出
使用 python 執行 mysql_example.py 指令碼並驗證輸出。
(6, 'Java', 'Julie', datetime.date(2020, 12, 10)) (7, 'JQuery', 'Julie', datetime.date(2020, 5, 10))
Python & MySQL - 排序資料示例
Python 使用c.execute(q)函式使用排序語句從表中按排序順序選擇記錄,其中 c 是遊標,q 是要執行的選擇查詢。
語法
# execute SQL query using execute() method. cursor.execute(sql) result = cursor.fetchall() for record in result: print(record)
| 序號 | 引數 & 描述 |
|---|---|
| 1 | $sql 必需 - 從表中選擇記錄並使用排序語句進行排序的 SQL 查詢。 |
示例
嘗試以下示例以使用排序語句從表中選擇排序後的記錄:
複製並貼上以下示例作為 mysql_example.ty:
#!/usr/bin/python
import MySQLdb
# Open database connection
db = MySQLdb.connect("localhost","root","root@123", "TUTORIALS")
# prepare a cursor object using cursor() method
cursor = db.cursor()
sql = "Select * from tutorials_tbl order by tutorial_title asc"
# execute SQL query using execute() method.
cursor.execute(sql)
# fetch all records from cursor
result = cursor.fetchall()
# iterate result and print records
for record in result:
print(record)
# disconnect from server
db.close()
輸出
使用 python 執行 mysql_example.py 指令碼並驗證輸出。
(1, 'HTML 5', 'Robert', datetime.date(2010, 2, 10)) (2, 'Java', 'Julie', datetime.date(2020, 12, 10)) (3, 'JQuery', 'Julie', datetime.date(2020, 5, 10))
Python & MySQL - 使用連線示例
Python 使用c.execute(q)函式從表中選擇記錄,其中 c 是遊標,q 是要執行的選擇查詢。
語法
# execute SQL query using execute() method. cursor.execute(sql) result = cursor.fetchall() for record in result: print(record)
| 序號 | 引數 & 描述 |
|---|---|
| 1 | $sql 必需 - 從表中選擇記錄的 SQL 查詢。 |
首先使用以下指令碼在 MySQL 中建立一個表並插入兩條記錄。
create table tcount_tbl(
tutorial_author VARCHAR(40) NOT NULL,
tutorial_count int
);
insert into tcount_tbl values('Julie', 2);
insert into tcount_tbl values('Robert', 1);
示例
嘗試以下示例以使用 Join 獲取兩個表中的記錄:
複製並貼上以下示例作為 mysql_example.ty:
#!/usr/bin/python
import MySQLdb
# Open database connection
db = MySQLdb.connect("localhost","root","root@123", "TUTORIALS")
# prepare a cursor object using cursor() method
cursor = db.cursor()
sql = """SELECT a.tutorial_id, a.tutorial_author, b.tutorial_count
FROM tutorials_tbl a, tcount_tbl b
WHERE a.tutorial_author = b.tutorial_author"""
# execute SQL query using execute() method.
cursor.execute(sql)
# fetch all records from cursor
result = cursor.fetchall()
# iterate result and print records
for record in result:
print(record)
# disconnect from server
db.close()
輸出
使用 python 執行 mysql_example.py 指令碼並驗證輸出。
(1, 'Robert', 1) (2, 'Julie', 2) (3, 'Julie', 2)
Python & MySQL - 執行事務
事務是一種確保資料一致性的機制。事務具有以下四個屬性:
原子性 - 事務要麼完成,要麼根本不發生任何事情。
一致性 - 事務必須從一致狀態開始,並使系統處於一致狀態。
隔離性 - 事務的中間結果在當前事務之外不可見。
永續性 - 一旦事務提交,其效果將保持持久,即使在系統故障後也是如此。
Python DB API 2.0 提供兩種方法來提交或回滾事務。
示例
您已經知道如何實現事務。這裡再次提供一個類似的示例:
# Prepare SQL query to DELETE required records sql = "Delete from tutorials_tbl where tutorial_id = 2" try: # Execute the SQL command cursor.execute(sql) # Commit your changes in the database db.commit() except: # Rollback in case there is any error db.rollback()
COMMIT 操作
Commit 是一個操作,它向資料庫發出一個綠色訊號以完成更改,並且在此操作之後,任何更改都無法恢復。
這是一個呼叫commit方法的簡單示例。
db.commit()
ROLLBACK 操作
如果您對一個或多個更改不滿意,並且想要完全撤消這些更改,則使用rollback()方法。
這是一個呼叫rollback()方法的簡單示例。
db.rollback()
斷開資料庫連線
要斷開資料庫連線,請使用 close() 方法。
db.close()
如果使用者使用 close() 方法關閉了與資料庫的連線,則任何未完成的事務都將由 DB 回滾。但是,與其依賴任何 DB 底層實現細節,不如在應用程式中顯式呼叫 commit 或 rollback 會更好。
Python & MySQL - 處理錯誤
錯誤來源很多。一些示例包括執行的 SQL 語句中的語法錯誤、連線故障或對已取消或已完成的語句控制代碼呼叫 fetch 方法。
DB API 定義了每個資料庫模組中必須存在的一些錯誤。下表列出了這些異常。
| 序號 | 異常 & 描述 |
|---|---|
| 1 | Warning 用於非致命問題。必須是 StandardError 的子類。 |
| 2 | Error 錯誤的基類。必須是 StandardError 的子類。 |
| 3 | InterfaceError 用於資料庫模組中的錯誤,而不是資料庫本身。必須是 Error 的子類。 |
| 4 | DatabaseError 用於資料庫中的錯誤。必須是 Error 的子類。 |
| 5 | DataError DatabaseError 的子類,指的是資料中的錯誤。 |
| 6 | OperationalError DatabaseError 的子類,指的是諸如與資料庫的連線丟失之類的錯誤。這些錯誤通常超出 Python 指令碼編寫者的控制範圍。 |
| 7 | IntegrityError DatabaseError 的子類,用於會破壞關係完整性的情況,例如唯一性約束或外部索引鍵。 |
| 8 | InternalError DatabaseError 的子類,指的是資料庫模組內部的錯誤,例如遊標不再處於活動狀態。 |
| 9 | ProgrammingError DatabaseError 的子類,指的是諸如表名錯誤和其他可以安全地歸咎於您的錯誤。 |
| 10 | NotSupportedError DatabaseError 的子類,指的是嘗試呼叫不受支援的功能。 |
您的 Python 指令碼應該處理這些錯誤,但在使用上述任何異常之前,請確保您的 MySQLdb 支援該異常。您可以透過閱讀 DB API 2.0 規範來獲取有關它們的更多資訊。