目录
  • 1. pymysql(https://pypi.org/project/pymysql/)
  • 2. mysqldb(https://mysqlclient.readthedocs.io/user_guide.html)
  • 3. qtsql(https://doc.qt.io/qt-5/qtsql-index.html)
  • 4. psycopg2(https://pypi.org/project/psycopg2/)
  • 5. supersqlite(https://github.com/plasticityai/supersqlite)

【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都与mysqlclientmysqldb相兼容。
  • 同时支持python 23
  • 能够支持mysql和mariadb服务器。

缺点:

不支持由mysql提供的低级api,其中包括:data_seekstore_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的规范和线程的安全性(即,多个线程可以共享同一个连接)。由于它是为具有大量多线程的应用程序而设计的,因此此类应用不但会创建和销毁大量的指针,而且会生成大量并发的insertupdate

安装和指南:

可以通过运行如下命令,在自己的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连接器内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!