适合Python项目的五大SQL连接器

译文
开发 后端
在本文中,您将了解到何为数据库连接器、为何要在Python中使用数据库连接器,以及五种最常用的Python SQL数据库连接器。此外,本文也介绍了每种连接器的安装步骤,及其各自的优缺点。

[[423475]]

【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:

  1. bash 
  2.  
  3. pip install pymysql 

完成安装后,我们可以通过运行如下Python代码,来测试数据库连接器:

  1. import pymysql 
  2. con = pymysql.connect('localhost''username'
  3.     'password''db_name’'
  4. with con.cursor() as cur: 
  5.     cur.execute('SELECT VERSION()'
  6.     version = cur.fetchone() 
  7.     print(f'Database version: {version[0]}'
  8. 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模块:

  1. bash 
  2. For Ubuntu, use the following command - 
  3. sudo apt-get install python-pip python-dev libmysqlclient-dev 
  4. For Fedora, use the following command - 
  5. sudo dnf installPythonpython-devel mysql-devel redhat-rpm-config gcc 
  6. #ForPythoncommand prompt, use the following command - 
  7. pip install MySQL-python 

您也可以通过运行如下Python代码,来使用该连接器:

  1. from MySQLdb import _mysql 
  2. db=_mysql.connect() 
  3. db=_mysql.connect(host="localhost",user="username"
  4.                   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代码,导入对应的模块。

  1. from PyQt5 import QtSql 

并且通过如下代码段,连接到数据库上:

  1. self.QSqlDatabase.addDatabase("QMYSQL"
  2. self.db.setHostName("host_name"
  3. self.db.setDatabaseName("database_name"
  4. self.db.setUserName("username"
  5. 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:

  1. bash 
  2.  
  3. pip install psycopg2 

完成安装后,请运行如下Python代码:

  1. import psycopg2 
  2. try: 
  3.     conn = psycopg2.connect("dbname='template1' user='dbuser' host='localhost' password='dbpass'"
  4. except
  5.     print "I am unable to connect to the database" 
  6. cur = conn.cursor() 
  7. cur.execute("""SELECT datname from pg_database"""

优点

  • 快速高效。
  • 支持多种连接、以及各种连接对象。
  • 支持各种异步查询。

缺点

  • 缺乏相应的文档。

5. SuperSQLite(https://github.com/plasticityai/supersqlite)

作为一个针对Python的超级SQLite库和驱动程序,SuperSQLite将原有内置的SQLite包,替换成了为每个平台原生的、预编译好(pre-compiled)的新版本SQLite,及其SQLite扩展。

安装和指南

您可以通过运行如下命令,在自己的PC上安装SuperSQLite:

  1. bash  
  2. pip install supersqlite 

完成安装后,运行如下Python代码即可使用:

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

优点

  • 快速高效。
  • 可以通过HTTP协议实现远程流式传输。
  • 可以实现全文检索。

缺点

  • 暂未发现显著的缺点。

小结

综上所述,我们一同了解了何为数据库连接器、为何要在Python中使用数据库连接器,以及五种最常用的Python SQL数据库连接器。此外,我们还讨论了每种连接器的安装步骤,及其各自的优缺点。

原文标题:The 5 Best SQL Adapters for Your Python Project,作者: Ochuko Onojakpor

【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】

 

责任编辑:武晓燕 来源: 51CTO
相关推荐

2010-07-05 09:56:37

2010-11-10 10:39:14

sql server远

2014-01-14 14:28:17

Linux应用

2023-02-07 07:16:54

人工智能机器学习方法

2009-11-02 09:38:07

开源ESB

2019-06-04 10:40:07

2016-08-05 11:02:47

LinuxUbuntuManjaro

2009-08-21 19:16:45

刀片服务器综合布线

2011-02-17 11:18:29

PythonWebRuby

2020-11-04 09:43:27

人工智能CIO机器学习

2021-01-13 15:13:07

Python开发 工具

2017-12-25 10:34:18

技术预测机遇

2011-10-29 09:55:05

Drupal服务器服务器优化

2020-02-04 09:00:00

物联网开发VS CodeIOT

2012-05-29 09:59:34

2011-03-16 10:19:21

浏览器性能测试

2009-07-30 17:58:52

刀片服务器机架服务器虚拟化

2018-05-04 08:09:08

2011-09-21 09:40:57

软件项目

2023-05-15 16:24:00

光纤综合布线
点赞
收藏

51CTO技术栈公众号