介紹
本文將解釋什么是數(shù)據(jù)庫連接器,并介紹一些流行的 Python SQL 連接器的優(yōu)缺點。
什么是數(shù)據(jù)庫連接器?
數(shù)據(jù)庫連接器是一種驅(qū)動程序,其工作方式類似于將軟件接口連接到特定數(shù)據(jù)庫供應(yīng)商實現(xiàn)的適配器。
為什么要使用 Python 數(shù)據(jù)庫連接器?
Python 的標(biāo)準(zhǔn)數(shù)據(jù)庫接口是 Python DB-API。此接口僅將 MySQLdb 模塊用于 MySQL。該模塊獨立于任何其他數(shù)據(jù)庫引擎,因此我們需要編寫 Python 腳本來訪問任何其他數(shù)據(jù)庫引擎。但是,這樣做與 Python 3 不兼容。因此 Python 為我們提供了 Python 數(shù)據(jù)庫連接器。
前 5 個 Python SQL 連接器列表
以下是對大多數(shù) Python 程序員有用的前五個 Python SQL 數(shù)據(jù)庫連接器的列表:
- pymysql
- MySQL數(shù)據(jù)庫
- QTSQL
- Psycopg2
- 超級SQLite
1. pymysql
MySQL 是領(lǐng)先的開源數(shù)據(jù)庫管理系統(tǒng)。它是一個多用戶、多線程的數(shù)據(jù)庫管理系統(tǒng)。MySQL 在 Web 開發(fā)工作中特別受歡迎。
安裝使用
要在您的 PC 上安裝 PyMySQL,請運(yùn)行以下命令:
bash
pip install pymysql
安裝后,我們現(xiàn)在可以通過運(yùn)行以下 python 代碼來測試我們的數(shù)據(jù)庫連接器:
import pymysql
con = pymysql.connect('localhost', 'username',
'password', 'db_name’')
with con.cursor() as cur:
cur.execute('SELECT VERSION()')
version = cur.fetchone()
print(f'Database version: {version[0]}')
con.close()
優(yōu)點
- 大多數(shù)公共 API 都與 mysqlclient 和 MySQLdb 兼容。
- 支持 Python 2 和 3。
- 支持 MySQL 和 MariaDB 服務(wù)器。
缺點
- 不支持 _mysql 提供的低級 API,如 data_seek、store_result 和 use_result。
2. MySQL數(shù)據(jù)庫
MySQLdb 是流行的 MySQL 數(shù)據(jù)庫服務(wù)器的線程兼容接口,提供 Python 數(shù)據(jù)庫 API。
安裝使用
要安裝 MySQLdb 模塊,請使用以下命令:
bash
# 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 MySQL-python
要使用此連接器,請運(yùn)行以下 Python 代碼:
from MySQLdb import _mysql
db=_mysql.connect()
db=_mysql.connect(host="localhost",user="username",
passwd="password",db="db_name")
優(yōu)點
- 用 C 構(gòu)建,因此運(yùn)行速度很快。
- 純 SQL。
- 支持 MySQL。
缺點
- 不支持 Python 3。
- 需要您編寫 SQL 代碼。
- 需要你管理游標(biāo),不做任何緩存、參數(shù)化等。
- 如果不重寫所有數(shù)據(jù)庫代碼,就無法切換到不同的數(shù)據(jù)庫后端。
3. QTSQL
QTSQL 是一個數(shù)據(jù)庫連接器,用于將數(shù)據(jù)庫與 PYQT5 應(yīng)用程序集成。需要注意的是,QTSQL 主要用于 UI 應(yīng)用程序(畢竟 QT 是一個 GUI 工具包)。
安裝使用
QTSQL 預(yù)裝了 PYQT5。
要導(dǎo)入模塊,請使用以下 Python 代碼:
from PyQt5 import QtSql
要連接到數(shù)據(jù)庫:
self.QSqlDatabase.addDatabase("QMYSQL")
self.db.setHostName("host_name")
self.db.setDatabaseName("database_name")
self.db.setUserName("username")
self.db.setPassword("password")
QSqlDatabase.addDatabase上面代碼中的第一個參數(shù)用于添加驅(qū)動程序(例如,QPSQL、QMYSQL、QOCI、QODBC、QSQLITE 等)。接下來的四個命令setHostName()、setDatabaseName()、setUserName()和setPassword()初始化數(shù)據(jù)庫連接。QSqlDatabase.open()被調(diào)用以打開數(shù)據(jù)庫并在初始化后訪問它。
優(yōu)點
- 僅使用 Qt 庫。
- 它返回 Qt 對象,因此它將與 Qt 的標(biāo)準(zhǔn)小部件集成。
- 可以使用任何 Qt 支持的數(shù)據(jù)庫后端(MySQL、SQLite)。
缺點
- 還是需要你寫SQL。
4. Psycopg2
Psycopg 是 Python 編程語言中最流行的 PostgreSQL 數(shù)據(jù)庫適配器。它的主要特點是完整實現(xiàn)了 Python DB API 2.0 規(guī)范和線程安全(多個線程可以共享同一個連接)。它是為大量多線程應(yīng)用程序設(shè)計的,這些應(yīng)用程序創(chuàng)建和銷毀大量游標(biāo)并生成大量并發(fā)INSERTs 或UPDATEs。
安裝和指南
要安裝,請運(yùn)行以下命令:
bash
pip install psycopg2
安裝后,運(yùn)行下面的Python代碼即可使用:
import psycopg2
try:
conn = psycopg2.connect("dbname='template1' user='dbuser' host='localhost' password='dbpass'")
except:
print "I am unable to connect to the database"
cur = conn.cursor()
cur.execute("""SELECT datname from pg_database""")
優(yōu)點
- 快速高效。
- 支持多個連接和連接對象。
- 支持異步查詢。
缺點
- 缺乏文檔。
5.超級SQLite
用于 Python 的增壓 SQLite 庫和驅(qū)動程序。該庫將內(nèi)置 SQLite 包替換為為每個平臺本地預(yù)編譯的較新版本的 SQLite,以及本地預(yù)編譯的 SQLite 擴(kuò)展。
安裝和指南
要安裝,請運(yùn)行以下命令:
bash
pip install supersqlite
安裝后,運(yùn)行下面的Python代碼即可使用:
from supersqlite import sqlite3
conn = sqlite3.connect('databasefile.db')
優(yōu)點
- 快速高效。
- 通過 HTTP 進(jìn)行遠(yuǎn)程流式傳輸。
- 全文檢索。
缺點
- 沒有已知的缺點。
結(jié)論
在本文中,你了解了什么是數(shù)據(jù)庫連接器、為什么要在 Python 中使用數(shù)據(jù)庫連接器以及最常用的 5 個 Python SQL 數(shù)據(jù)庫連接器。此外,你還了解了每種連接器的優(yōu)缺點以及安裝和使用它們的簡單程度。