適合Python項(xiàng)目的五大SQL連接器
【51CTO.com快譯】 作為一種驅(qū)動(dòng)程序,數(shù)據(jù)庫(kù)連接器(database connector)的工作方式類(lèi)似于,我們將軟件接口連接到特定的數(shù)據(jù)庫(kù)上,以實(shí)現(xiàn)適配器的基本功能?,F(xiàn)如今,Python已經(jīng)成為了一種在全球范圍內(nèi),被廣為使用的編程語(yǔ)言。因此,我們有必要了解與Python有關(guān)的數(shù)據(jù)庫(kù)連接器。
通常,我們可以通過(guò)作為Python標(biāo)準(zhǔn)數(shù)據(jù)庫(kù)接口的Python DB-API,將MySQLdb模塊運(yùn)用于MySQL之上。不過(guò),由于該模塊獨(dú)立于任何其他數(shù)據(jù)庫(kù)引擎,因此我們需要額外地通過(guò)編寫(xiě)Python腳本,來(lái)實(shí)現(xiàn)對(duì)于其他數(shù)據(jù)庫(kù)引擎的訪(fǎng)問(wèn)。而且,該API與Python 3并不兼容,因此我們需要用到各種Python類(lèi)型的數(shù)據(jù)庫(kù)連接器。接下來(lái)我們就來(lái)看一下適合大多數(shù)Python程序員的、五大Python SQL數(shù)據(jù)庫(kù)連接器,及它們安裝的各種優(yōu)缺點(diǎn)
1. PyMySQL(https://pypi.org/project/PyMySQL/)
如您所知,MySQL是業(yè)界領(lǐng)先的,多用戶(hù)、多線(xiàn)程的開(kāi)源式數(shù)據(jù)庫(kù)管理系統(tǒng)。它在Web項(xiàng)目的開(kāi)發(fā)中倍受歡迎。
安裝與使用:
我們可以通過(guò)運(yùn)行如下命令,在自己的PC上安裝PyMySQL:
bash pip install pymysql
完成安裝后,我們可以通過(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相兼容。 - 同時(shí)支持
Python 2和3。 - 能夠支持MySQL和MariaDB服務(wù)器。
缺點(diǎn):
不支持由MySQL提供的低級(jí)API,其中包括:data_seek、store_result和 use_result等。
2. MySQLdb(https://mysqlclient.readthedocs.io/user_guide.html)
作為MySQL數(shù)據(jù)庫(kù)服務(wù)器上能夠兼容線(xiàn)程(thread-compatible)的接口,MySQLdb提供了針對(duì)Python數(shù)據(jù)庫(kù)的API。
安裝與使用:
您可以通過(guò)運(yùn)行如下命令,在自己的PC上安裝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 installPythonpython-devel mysql-devel redhat-rpm-config gcc #ForPythoncommand prompt, use the following command - pip install MySQL-python
也可以通過(guò)運(yùn)行如下Python代碼,來(lái)使用該連接器:
from MySQLdb import _mysql db=_mysql.connect() db=_mysql.connect(host="localhost",user="username", passwd="password",db="db_name")
優(yōu)點(diǎn):
- 由于是用C語(yǔ)言構(gòu)建的,因此其運(yùn)行的速度非??臁?/li>
- 屬于純粹的SQL。
- 能夠支持MySQL。
缺點(diǎn):
- 并不支持Python 3。
- 需要自行編寫(xiě)SQL代碼。
- 不但需要自行管理指針,而且無(wú)法進(jìn)行任何緩存、或參數(shù)化。
- 如果不重寫(xiě)所有的數(shù)據(jù)庫(kù)代碼,則無(wú)法切換到不同的數(shù)據(jù)庫(kù)后端。
3. QTSQL(https://doc.qt.io/qt-5/qtsql-index.html)
作為另一種數(shù)據(jù)庫(kù)連接器,QTSQL可被用于將數(shù)據(jù)庫(kù)與各種PYQT5應(yīng)用程序相集成。值得注意的是,由于QT是一種GUI工具包,因此QTSQL主要被用于UI類(lèi)應(yīng)用程序。
安裝與使用:
由于QTSQL已經(jīng)預(yù)安裝了PYQT5,因此您可以通過(guò)如下Python代碼,導(dǎo)入對(duì)應(yīng)的模塊。
from PyQt5 import QtSql
并且通過(guò)如下代碼段,連接到數(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等。緊接著的四行命令:setHostName()、setDatabaseName()、setUserName()和setPassword(),可用于初始化數(shù)據(jù)庫(kù)連接。此外,在完成初始化后,您還可以通過(guò)調(diào)用QSqlDatabase.open(),以打開(kāi)并訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)。
優(yōu)點(diǎn):
- 僅可以使用各種Qt庫(kù)。
- 由于它能夠與Qt的各種標(biāo)準(zhǔn)小部件相集成,因此可以返回Qt對(duì)象。
- 可以使用任何支持Qt的數(shù)據(jù)庫(kù)后端(如:MySQL、SQLite等)。
缺點(diǎn):
- 需要自行編寫(xiě)SQL。
4. Psycopg2(https://pypi.org/project/psycopg2/)
Psycopg 是Python編程語(yǔ)言中最流行的PostgreSQL數(shù)據(jù)庫(kù)適配器。它的主要特點(diǎn)是完整地實(shí)現(xiàn)了PythonDB API 2.0的規(guī)范和線(xiàn)程的安全性(即,多個(gè)線(xiàn)程可以共享同一個(gè)連接)。由于它是為具有大量多線(xiàn)程的應(yīng)用程序而設(shè)計(jì)的,因此此類(lèi)應(yīng)用不但會(huì)創(chuàng)建和銷(xiāo)毀大量的指針,而且會(huì)生成大量并發(fā)的INSERT或UPDATE。
安裝和指南:
可以通過(guò)運(yùn)行如下命令,在自己的PC上安裝psycopg2:
bash pip install psycopg2
完成安裝后,請(qǐng)運(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):
- 快速高效。
- 支持多種連接、以及各種連接對(duì)象。
- 支持各種異步查詢(xún)。
缺點(diǎn):
- 缺乏相應(yīng)的文檔。
5. SuperSQLite(https://github.com/plasticityai/supersqlite)
作為一個(gè)針對(duì)Python的超級(jí)SQLite庫(kù)和驅(qū)動(dòng)程序,SuperSQLite將原有內(nèi)置的SQLite包,替換成了為每個(gè)平臺(tái)原生的、預(yù)編譯好(pre-compiled)的新版本SQLite,及其SQLite擴(kuò)展。
安裝和指南:
可以通過(guò)運(yùn)行如下命令,在自己的PC上安裝SuperSQLite:
bash pip install supersqlite
完成安裝后,運(yùn)行如下Python代碼即可使用:
from supersqlite import sqlite3
conn = sqlite3.connect('databasefile.db')
優(yōu)點(diǎn):
- 快速高效。
- 可以通過(guò)HTTP協(xié)議實(shí)現(xiàn)遠(yuǎn)程流式傳輸。
- 可以實(shí)現(xiàn)全文檢索。
暫未發(fā)現(xiàn)顯著的缺點(diǎn)。
小結(jié):
綜上所述,我們一同了解了何為數(shù)據(jù)庫(kù)連接器、為何要在Python中使用數(shù)據(jù)庫(kù)連接器,以及五種最常用的Python SQL數(shù)據(jù)庫(kù)連接器。此外,我們還討論了每種連接器的安裝步驟,及其各自的優(yōu)缺點(diǎn)。
到此這篇關(guān)于適合Python項(xiàng)目的五大SQL連接器的文章就介紹到這了,更多相關(guān)適合Python的五大SQL連接器內(nèi)容請(qǐng)搜索本站以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持本站!
版權(quán)聲明:本站文章來(lái)源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請(qǐng)保持原文完整并注明來(lái)源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非maisonbaluchon.cn所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來(lái)源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來(lái),僅供學(xué)習(xí)參考,不代表本站立場(chǎng),如有內(nèi)容涉嫌侵權(quán),請(qǐng)聯(lián)系alex-e#qq.com處理。
關(guān)注官方微信