App下載

適用于 Python 項(xiàng)目的 5 個(gè)最佳 SQL 適配器

觸摸陽(yáng)光 2021-09-10 12:18:27 瀏覽數(shù) (2208)
反饋

介紹

本文將解釋什么是數(shù)據(jù)庫(kù)連接器,并介紹一些流行的 Python SQL 連接器的優(yōu)缺點(diǎn)。


什么是數(shù)據(jù)庫(kù)連接器?

數(shù)據(jù)庫(kù)連接器是一種驅(qū)動(dòng)程序,其工作方式類(lèi)似于將軟件接口連接到特定數(shù)據(jù)庫(kù)供應(yīng)商實(shí)現(xiàn)的適配器。

為什么要使用 Python 數(shù)據(jù)庫(kù)連接器?

Python 的標(biāo)準(zhǔn)數(shù)據(jù)庫(kù)接口是 Python DB-API。此接口僅將 MySQLdb 模塊用于 MySQL。該模塊獨(dú)立于任何其他數(shù)據(jù)庫(kù)引擎,因此我們需要編寫(xiě) Python 腳本來(lái)訪問(wèn)任何其他數(shù)據(jù)庫(kù)引擎。但是,這樣做與 Python 3 不兼容。因此 Python 為我們提供了 Python 數(shù)據(jù)庫(kù)連接器。

前 5 個(gè) Python SQL 連接器列表

以下是對(duì)大多數(shù) Python 程序員有用的前五個(gè) Python SQL 數(shù)據(jù)庫(kù)連接器的列表:

  1. pymysql
  2. MySQL數(shù)據(jù)庫(kù)
  3. QTSQL
  4. Psycopg2
  5. 超級(jí)SQLite

1. pymysql

MySQL 是領(lǐng)先的開(kāi)源數(shù)據(jù)庫(kù)管理系統(tǒng)。它是一個(gè)多用戶(hù)、多線(xiàn)程的數(shù)據(jù)庫(kù)管理系統(tǒng)。MySQL 在 Web 開(kāi)發(fā)工作中特別受歡迎。

安裝使用

要在您的 PC 上安裝 PyMySQL,請(qǐng)運(yùn)行以下命令:

bash 
pip install pymysql 

安裝后,我們現(xiàn)在可以通過(guò)運(yùn)行以下 python 代碼來(lái)測(cè)試我們的數(shù)據(jù)庫(kù)連接器:

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)點(diǎn)

  • 大多數(shù)公共 API 都與 mysqlclient 和 MySQLdb 兼容。
  • 支持 Python 2 和 3。
  • 支持 MySQL 和 MariaDB 服務(wù)器。

缺點(diǎn)

  • 不支持 _mysql 提供的低級(jí) API,如 data_seek、store_result 和 use_result。

2. MySQL數(shù)據(jù)庫(kù)

MySQLdb 是流行的 MySQL 數(shù)據(jù)庫(kù)服務(wù)器的線(xiàn)程兼容接口,提供 Python 數(shù)據(jù)庫(kù) API。

安裝使用

要安裝 MySQLdb 模塊,請(qǐng)使用以下命令:

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

要使用此連接器,請(qǐng)運(yùn)行以下 Python 代碼:

from MySQLdb import _mysql

db=_mysql.connect()
db=_mysql.connect(host="localhost",user="username",
                  passwd="password",db="db_name")

優(yōu)點(diǎn)

  • 用 C 構(gòu)建,因此運(yùn)行速度很快。
  • 純 SQL。
  • 支持 MySQL。

缺點(diǎn)

  • 不支持 Python 3。
  • 需要您編寫(xiě) SQL 代碼。
  • 需要你管理游標(biāo),不做任何緩存、參數(shù)化等。
  • 如果不重寫(xiě)所有數(shù)據(jù)庫(kù)代碼,就無(wú)法切換到不同的數(shù)據(jù)庫(kù)后端。

3. QTSQL

QTSQL 是一個(gè)數(shù)據(jù)庫(kù)連接器,用于將數(shù)據(jù)庫(kù)與 PYQT5 應(yīng)用程序集成。需要注意的是,QTSQL 主要用于 UI 應(yīng)用程序(畢竟 QT 是一個(gè) GUI 工具包)。

安裝使用

QTSQL 預(yù)裝了 PYQT5。

要導(dǎo)入模塊,請(qǐng)使用以下 Python 代碼:

from PyQt5 import QtSql

要連接到數(shù)據(jù)庫(kù):

self.QSqlDatabase.addDatabase("QMYSQL")
self.db.setHostName("host_name")
self.db.setDatabaseName("database_name")
self.db.setUserName("username")
self.db.setPassword("password")

QSqlDatabase.addDatabase上面代碼中的第一個(gè)參數(shù)用于添加驅(qū)動(dòng)程序(例如,QPSQL、QMYSQL、QOCI、QODBC、QSQLITE 等)。接下來(lái)的四個(gè)命令setHostName()、setDatabaseName()、setUserName()和setPassword()初始化數(shù)據(jù)庫(kù)連接。QSqlDatabase.open()被調(diào)用以打開(kāi)數(shù)據(jù)庫(kù)并在初始化后訪問(wèn)它。

優(yōu)點(diǎn)

  • 僅使用 Qt 庫(kù)。
  • 它返回 Qt 對(duì)象,因此它將與 Qt 的標(biāo)準(zhǔn)小部件集成。
  • 可以使用任何 Qt 支持的數(shù)據(jù)庫(kù)后端(MySQL、SQLite)。

缺點(diǎn)

  • 還是需要你寫(xiě)SQL。

4. Psycopg2

Psycopg 是 Python 編程語(yǔ)言中最流行的 PostgreSQL 數(shù)據(jù)庫(kù)適配器。它的主要特點(diǎn)是完整實(shí)現(xiàn)了 Python DB API 2.0 規(guī)范和線(xiàn)程安全(多個(gè)線(xiàn)程可以共享同一個(gè)連接)。它是為大量多線(xiàn)程應(yīng)用程序設(shè)計(jì)的,這些應(yīng)用程序創(chuàng)建和銷(xiāo)毀大量游標(biāo)并生成大量并發(fā)INSERTs 或UPDATEs。

安裝和指南

要安裝,請(qǐng)運(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)點(diǎn)

  • 快速高效。
  • 支持多個(gè)連接和連接對(duì)象。
  • 支持異步查詢(xún)。

缺點(diǎn)

  • 缺乏文檔。

5.超級(jí)SQLite

用于 Python 的增壓 SQLite 庫(kù)和驅(qū)動(dòng)程序。該庫(kù)將內(nèi)置 SQLite 包替換為為每個(gè)平臺(tái)本地預(yù)編譯的較新版本的 SQLite,以及本地預(yù)編譯的 SQLite 擴(kuò)展。

安裝和指南

要安裝,請(qǐng)運(yùn)行以下命令:

bash 
pip install supersqlite

安裝后,運(yùn)行下面的Python代碼即可使用:

from supersqlite import sqlite3 
conn = sqlite3.connect('databasefile.db') 

優(yōu)點(diǎn)

  • 快速高效。
  • 通過(guò) HTTP 進(jìn)行遠(yuǎn)程流式傳輸。
  • 全文檢索。

缺點(diǎn)

  • 沒(méi)有已知的缺點(diǎn)。

結(jié)論

在本文中,你了解了什么是數(shù)據(jù)庫(kù)連接器、為什么要在 Python 中使用數(shù)據(jù)庫(kù)連接器以及最常用的 5 個(gè) Python SQL 數(shù)據(jù)庫(kù)連接器。此外,你還了解了每種連接器的優(yōu)缺點(diǎn)以及安裝和使用它們的簡(jiǎn)單程度。


0 人點(diǎn)贊