用不同语言编写的两个程序能连接到同一个SQL数据库吗?

问题几乎在标题,但这里是具体的。 对于我的高级devise项目,我们将编写软件来控制一些硬件并在Web前端显示诊断信息。 为了实现这一点,我打算使用Python和nodejs的组合。 理论上,python服务脚本将通过bacnet IP与硬件进行通信,并在SQL数据库中logging诊断信息。 nodejs JavaScript服务器代码将通过查询数据库并返回相关信息来响应webfront请求。 我很新的SQL,所以我的主要问题是..这是可能的吗? 我的第二个和更抽象的问题是…这是明智的吗? 而且,在两端使用相同的语言是否有明显的优势,无论这种语言是Python,Java还是其他语言?

TL;博士

您可以使用任何编程语言为您select的数据库服务器提供客户端。

对于数据库服务器,只要客户端按照服务器的要求进行通信(即使用服务器的库,协议等),那么使用什么编程语言或系统就没有什么区别。


数据库驱动程序提供了一个通用的抽象层,为数据库服务器和客户端使用相同的语言提供了保证。

编程语言与数据库驱动程序的接口关注语言细节 – 例如,提供符合语言的语法; 而在另一方面,驱动程序将确保所有命令都以服务器期望的协议发送。

由于驱动程序是这样一个核心要求,通常有多个驱动程序可用于数据库; 也因为良好的数据库访问是程序员的核心要求,每种语言都力求为所有数据库提供“标准”API。 例如Java有JDBC Python有DB-API,.NET有ODBC(和ADO我相信,但是我不是.NET专家)。

这些是数据库驱动程序将符合的内容,因此,使用哪个数据库服务器并不重要,您有一​​个标准的连接方式,一个执行查询的标准方法和一个获取结果的标准方法 – 实际上,作为程序员你的生活更轻松。

在大多数情况下,数据库供应商提供了一个参考驱动程序(和API /库)。 它通常在C中,也是数据库使用的“本地”客户端。 例如MySQL数据库服务器的mysql 客户端使用MySQL C驱动程序进行连接,它与Python MySQLdb驱动程序使用的是相同的驱动程序; 它符合Python DB-API。

是的,可能的。

使用一个数据库的不同语言的两个应用程序与使用多个连接的应用程序几乎完全相同,因此您可能已经在使用它了。 所有可能的问题都完全一样。 数据库甚至不知道连接是从一个应用程序或另一个应用程序。

这是非常有可能和常见的做法。 可能有一些地方需要围绕数据编写应用程序,而不是相反,但这是可行的。

如果您在每个应用程序中使用大部分相同的查询,我也会build议尽可能使用存储过程 。