python 的 sqlite 和官方的 sqlite 是什么关系

sqlite 有一个官方实现:https://github.com/sqlite/sqlite

c 写的!

python 的 sqlite 和官方的 sqlite 是什么关系

Python 的标准库自带了 sqlite

这两个 sqlite 是什么关系,是 Python 按照 sqlite 的协议,重写了一遍,还是 copy 了一份 github 上的 sqlite 代码?

同理:java、golang、rust、node、c# 上的 sqlite 和官方的 c 的 sqlite 是什么关系?重写还是 copy ?


回答:

你混淆了 SQLite 不同场景下出现时的名词含义。

当我们在提到 SQLite 时,究竟指的是什么?

  • 一种数据库引擎(Database Engine)。与之对标的是 MyISAM、InnoDB 等等。
  • 一类文件格式(*.sqlite 文件)。与之对标的是 *.mdf、*.myd、*.myi 等等。
  • 一组 C API(即 sqlite3.h、sqlite3.c)。与之对标的是 stdlib.h、stdio.h 等等。
  • 一个 Python 模块(sqlite3 模块)。与之对标的是是 pymysqlmathtime 等等。

你这个问题约等于是在问:pymysql 是 Python 社区 “按照 Oracle MySql 的协议重写了一遍” 呢、还是 “copy 了一份 MySql 的代码” 呢?


回答:

python 是如何集成 sqlite 的?直接使用了 sqlite 的动态链接库吗?

是的,Python 中的 sqlite3 模块使用了 SQLite 的动态链接库。在 Python 中,sqlite3 模块是一个封装了 SQLite C 库的 Python 模块。Python 中的 sqlite3 模块在使用时会动态链接到操作系统中已经安装的 SQLite 动态链接库文件,以实现对 SQLite 数据库的访问。

当 Python 运行 sqlite3 模块的代码时,sqlite3 模块会调用 SQLite 动态链接库中的函数,例如 sqlite3_open() 和 sqlite3_prepare_v2() 等,来连接数据库、执行 SQL 语句等操作。Python 中的 sqlite3 模块提供了一组 Python API,使得用户可以使用 Python 代码来调用这些 SQLite C 库中的函数,从而方便地访问 SQLite 数据库。

需要注意的是,在不同的操作系统上,SQLite 动态链接库的名称和位置可能不同。在 Windows 操作系统上,SQLite 动态链接库通常命名为 sqlite3.dll,并存放在系统路径或者 Python 安装路径下的 DLLs 目录中。在 Linux 和 macOS 等 Unix-like 系统上,SQLite 动态链接库通常命名为 libsqlite3.so 或 libsqlite3.dylib,并存放在系统库路径中。在使用 sqlite3 模块时,需要确保操作系统中已经安装了 SQLite 动态链接库,并且该库文件的名称和路径正确。

python 的 sqlite 和官方的 sqlite 是什么关系

pyav 也是这样的原理

以上是 python 的 sqlite 和官方的 sqlite 是什么关系 的全部内容, 来源链接: utcz.com/p/938429.html

回到顶部