在Java中,大多数不同的RDBMS驱动程序都实现了JDBC API。
在Python中,大多数不同的RDBMS驱动程序都实现了DB-API2。
在C中,尽管我们将ODBC作为不同RDBMS的统一API,但人们通常更喜欢特定于RDBMS的API,例如libpq和C connector提供的API(我不确定sqlite3与其ODBC对应物)。为什么首选的RDBMS驱动程序实现不同的API,而不是C中的统一API?这样做有一些固有的困难吗?
谢谢。
Java和Python等语言为数据库提供了更高级别的抽象层,因此可以使用通用接口,并且可以根据需要更改底层数据库。这种灵活性是以特定于供应商的功能为代价的。
每个供应商提供的C API允许使用特定于每个数据库的功能。这意味着供应商锁定,但它还允许您利用这些供应商特定功能并执行特定于供应商的优化。
Java和Python运行时很可能在内部使用底层C API。