適合Python項目的五大SQL連接器
【51CTO.com快譯】 作為一種驅動程序,數據庫連接器(database connector
)的工作方式類似於,我們將軟件接口連接到特定的數據庫上,以實現適配器的基本功能。現如今,Python已經成為瞭一種在全球范圍內,被廣為使用的編程語言。因此,我們有必要瞭解與Python有關的數據庫連接器。
通常,我們可以通過作為Python標準數據庫接口的Python DB-API
,將MySQLdb
模塊運用於MySQL
之上。不過,由於該模塊獨立於任何其他數據庫引擎,因此我們需要額外地通過編寫Python腳本,來實現對於其他數據庫引擎的訪問。而且,該API與Python 3並不兼容,因此我們需要用到各種Python類型的數據庫連接器。接下來我們就來看一下適合大多數Python程序員的、五大Python SQL數據庫連接器,及它們安裝的各種優缺點
1. PyMySQL(https://pypi.org/project/PyMySQL/)
如您所知,MySQL是業界領先的,多用戶、多線程的開源式數據庫管理系統。它在Web項目的開發中倍受歡迎。
安裝與使用:
我們可以通過運行如下命令,在自己的PC上安裝PyMySQL:
bash pip install pymysql
完成安裝後,我們可以通過運行如下Python代碼,來測試數據庫連接器:
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()
優點:
- 其大多數公共API都與
mysqlclient
和MySQLdb
相兼容。 - 同時支持
Python 2
和3
。 - 能夠支持MySQL和MariaDB服務器。
缺點:
不支持由MySQL提供的低級API,其中包括:data_seek
、store_result
和 use_result
等。
2. MySQLdb(https://mysqlclient.readthedocs.io/user_guide.html)
作為MySQL數據庫服務器上能夠兼容線程(thread-compatible)
的接口,MySQLdb提供瞭針對Python數據庫的API。
安裝與使用:
您可以通過運行如下命令,在自己的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
也可以通過運行如下Python代碼,來使用該連接器:
from MySQLdb import _mysql db=_mysql.connect() db=_mysql.connect(host="localhost",user="username", passwd="password",db="db_name")
優點:
- 由於是用C語言構建的,因此其運行的速度非常快。
- 屬於純粹的SQL。
- 能夠支持MySQL。
缺點:
- 並不支持Python 3。
- 需要自行編寫SQL代碼。
- 不但需要自行管理指針,而且無法進行任何緩存、或參數化。
- 如果不重寫所有的數據庫代碼,則無法切換到不同的數據庫後端。
3. QTSQL(https://doc.qt.io/qt-5/qtsql-index.html)
作為另一種數據庫連接器,QTSQL可被用於將數據庫與各種PYQT5
應用程序相集成。值得註意的是,由於QT是一種GUI工具包,因此QTSQL
主要被用於UI類應用程序。
安裝與使用:
由於QTSQL已經預安裝瞭PYQT5,因此您可以通過如下Python代碼,導入對應的模塊。
from PyQt5 import QtSql
並且通過如下代碼段,連接到數據庫上:
self.QSqlDatabase.addDatabase("QMYSQL") self.db.setHostName("host_name") self.db.setDatabaseName("database_name") self.db.setUserName("username") self.db.setPassword("password")
在上述代碼中,QSqlDatabase.addDatabase
的第一個參數,可用於添加驅動程序,其中包括:QPSQL、QMYSQL、QOCI、QODBC、以及QSQLITE等。緊接著的四行命令:setHostName
()、setDatabaseName
()、setUserName
()和setPassword(),
可用於初始化數據庫連接。此外,在完成初始化後,您還可以通過調用QSqlDatabase.open
(),以打開並訪問數據庫。
優點:
- 僅可以使用各種Qt庫。
- 由於它能夠與Qt的各種標準小部件相集成,因此可以返回Qt對象。
- 可以使用任何支持Qt的數據庫後端(如:MySQL、SQLite等)。
缺點:
- 需要自行編寫SQL。
4. Psycopg2(https://pypi.org/project/psycopg2/)
Psycopg
是Python
編程語言中最流行的PostgreSQL
數據庫適配器。它的主要特點是完整地實現瞭PythonDB API 2.0
的規范和線程的安全性(即,多個線程可以共享同一個連接)。由於它是為具有大量多線程的應用程序而設計的,因此此類應用不但會創建和銷毀大量的指針,而且會生成大量並發的INSERT
或UPDATE
。
安裝和指南:
可以通過運行如下命令,在自己的PC上安裝psycopg2:
bash pip install psycopg2
完成安裝後,請運行如下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”””)
優點:
- 快速高效。
- 支持多種連接、以及各種連接對象。
- 支持各種異步查詢。
缺點:
- 缺乏相應的文檔。
5. SuperSQLite(https://github.com/plasticityai/supersqlite)
作為一個針對Python
的超級SQLite
庫和驅動程序,SuperSQLite
將原有內置的SQLite
包,替換成瞭為每個平臺原生的、預編譯好(pre-compiled
)的新版本SQLite
,及其SQLite
擴展。
安裝和指南:
可以通過運行如下命令,在自己的PC上安裝SuperSQLite:
bash pip install supersqlite
完成安裝後,運行如下Python代碼即可使用:
from supersqlite import sqlite3 conn = sqlite3.connect('databasefile.db')
優點:
- 快速高效。
- 可以通過HTTP協議實現遠程流式傳輸。
- 可以實現全文檢索。
暫未發現顯著的缺點。
小結:
綜上所述,我們一同瞭解瞭何為數據庫連接器、為何要在Python中使用數據庫連接器,以及五種最常用的Python SQL數據庫連接器。此外,我們還討論瞭每種連接器的安裝步驟,及其各自的優缺點。
到此這篇關於適合Python項目的五大SQL連接器的文章就介紹到這瞭,更多相關適合Python的五大SQL連接器內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- python 基於PYMYSQL使用MYSQL數據庫
- 詳解Python如何利用pymysql封裝項目通用的連接和查詢
- 教你怎麼用Python操作MySql數據庫
- Django創建項目+連通mysql的操作方法
- django連接Mysql中已有數據庫的方法詳解