有没有什么好方法可以直接将字节码传递给sqlite3?

有没有什么好方法可以直接将字节码传递给sqlite3?,sqlite,Sqlite,我正在开发一个工具,它允许Python开发人员编写Python代码与sqlite3数据库交互,类似于sqlalchemy,但没有“翻译”阶段。如果我可以生成一个sqlite3准备好的语句,我如何直接将它传递给评估系统 作为一个粗略的例子,以下是我如何粗略地看待用户能够与我的工具交互: myTable = Table("field1", "field2", "field3") mytable.insert("foo",

我正在开发一个工具,它允许Python开发人员编写Python代码与sqlite3数据库交互,类似于sqlalchemy,但没有“翻译”阶段。如果我可以生成一个sqlite3准备好的语句,我如何直接将它传递给评估系统

作为一个粗略的例子,以下是我如何粗略地看待用户能够与我的工具交互:

myTable = Table("field1", "field2", "field3")
mytable.insert("foo", "bar", "baz")
select = mytable.select("field1")
---------------
print(select)
>>> ["foo"]
SQLite3中没有(公共)API允许您执行预构建的SQLite字节码。可以使用
EXPLAIN
SQL命令查看SQL语句的字节码,但这是为了调试和学习,而不是为了您要做的事情

在大多数情况下,你不应该需要这个。如果您觉得编译准备好的语句所花费的时间将是一种负担,那么可以在创建sqlite3的数据库连接的整个生命周期内存储对象。已执行的准备好的语句可以被删除,从而允许再次执行它们。因此,只要数据库连接存在,就可以编译该语句一次,并根据需要多次使用它

但仅此而已。没有任何机制可以在
sqlite3
连接的生命周期之外持久保存准备好的语句。您不能通过任何公共API提取字节码,也不能使用您获得的某些字节码来重构准备好的语句


如果您想要连接之外的持久性,那么您需要将SQL语句文本存储在您想要持久性的任何位置,然后在重新连接到数据库时只需重新编译准备好的语句。根据应用程序的生命周期,一次重新编译(或多次重新编译,取决于存储的数量)不应该是一个特别的负担。

Python不是附带了一个SQLite3库,允许他们“编写Python代码”?没错,确实如此,但它仍然需要您编写sql语句。我在考虑创建一个抽象,非常粗略地说,它允许用户在sqlite3中创建表示SQL对象的python对象,如下所示:mytable=Table(“field1”、“field2”、“field3”);mytable.插入(“foo”、“bar”、“baz”);select=mytable.select(“field1”);这似乎是为了微薄的收益而放弃了SQL的大部分功能。此外,我也看不出准备好的语句和字节码在这里有什么帮助,除非您的计划是绕过SQL编译器本身。哪个。。。如果你不想使用SQL,为什么要使用SQLite?如果你想绕过SQL,你可以让
mytable
存储表名,然后让
插入
。选择
生成SQL命令而不是SQLite的字节码。但是,如果您在查询中没有使用SQL的表达能力,那么您似乎想要一个NoSQL数据库。