使用数据库驱动程序和子进程的区别

猫头鹰

由于线程安全,我总是使用数据库适配器驱动程序。但是我看到一些开发人员(特别是系统工程师)使用 subprocess 进行数据库查询,如下所示:

import subprocess
command = "mysql -u username --password= blah blah query statement"
p = subprocess.Popen(command, stdout=subprocess.PIPE)
p.communicate()

什么是正确的方法?性能上有什么区别?

马丁·彼得斯

使用外部命令几乎没有任何优势。有人可能使用它的唯一原因是因为他们不太知道如何安装合适的 Python 库来连接到该数据库引擎,并且他们在 shell 之前或从 shell 脚本使用了该命令行。

通过使用本机 Python 库,您将获得

  • 连接重用
  • 交易支持;将多个语句组合在一起,如果它们无法完成,则一起提交或回滚。
  • 本机类型支持,Python 类型映射到数据库类型,反之亦然。
  • 准备好的语句和 SQL 参数,以保护您的应用程序免受注入攻击和更好的性能

以及更多,为每个查询运行外部进程的所有东西都不会给你。在这里比较性能没有意义,无论如何,外部子进程不会很快。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用sql数据库驱动程序

模拟数据库驱动程序

CodeIgniter;库和驱动程序之间的区别

启动 SpringBoot 应用程序时使用 JDBC 驱动程序创建 Postgres 数据库?

使用JDBC驱动程序直接从android直接连接到数据库与使用Webservice之间有什么区别

Java数据库驱动程序设计

代码中的数据库驱动程序规范

Jooq是无法找到Postgres数据库驱动程序

NHibernate中的多个数据库驱动程序

从 mongoose 检索 mongoDB 驱动程序数据库

Mongo Scala 驱动程序 - 无法插入数据库

在Slick中导入不同的数据库驱动程序

Opencart 无法加载数据库驱动程序 mmysqli

未指定数据库驱动程序

h2数据库驱动程序发出未找到驱动程序的消息

使用本地Windows数据库驱动程序在Windows上为远程mssql数据库运行django迁移

将Laravel身份验证与驱动程序数据库一起使用

使用两个数据库时Laravel 5.5 mysql驱动程序错误

尝试使用JDBC连接Heroku数据库时找不到合适的驱动程序

使用数据库会话驱动程序时如何获取用户的会话?

使用postgres驱动程序播放光滑的数据库配置问题

如何使用Mongo DB JAVA驱动程序从MongoDB中的数据库删除集合?

哪个数据库驱动程序可将DbVisualiser与Azure SQL一起使用?

在Azure中使用ODBC驱动程序连接到外部数据库

使用php 5.5与MS SQL数据库进行通信的驱动程序

使用瘦jdbc驱动程序创建Oracle数据库触发器

无法使用Spark-Mongo驱动程序从多个数据库加载

如何使用开源语言为数据库创建驱动程序?

连接到H2数据库时,DriverManager尝试使用mariadb驱动程序