更改历史记录

3.43.1.0

所有调用到Python的C代码以及由Python调用的所有C代码都使用VectorCall/FastCall(请参见 PEP 590 ),这减少了传递和接收位置和关键字参数的开销。 (APSW issue 477 APSW issue 446 ):

  • 将参数从Python值转换为C值会删除泛型 PyArg_ParseTupleAndKeywords 支持更高效且允许更好的异常消息的直接处理。

  • 正在运行 速测 使用继承所有方法的VFS,速度从比纯SQLite慢17%到慢2%。

  • A virtual table benchmark 所需时间减少35%。(请记住,基准是最好的情况!)

这个 shell JSON输出模式已修复。模式‘json’输出一个json数组,而模式‘jsonl’输出换行分隔的json对象,也就是 json lines 。 (APSW issue 483 )

3.43.0.0

这是支持Python3.6和Python3.7的最后一个版本(这两个版本都结束了)。该政策已在 about 页面上的消息是,在一个支持该版本的Python版本停止使用后,将会再发布一个APSW版本。 (APSW issue 471 )

增列 best practice 模块 (APSW issue 460 )

apsw.ext.log_sqlite() 输出警告级别的SQLite警告。 (APSW issue 472 )

sqlite3_stmt_explain 包装可作为 explain Execute/Executemany方法上的关键字参数。 (APSW issue 474 )

Added documentation and helper class for implementing custom pragmas in your own VFS (APSW issue 464)

Reduced overhead of the Column method when using apsw.ext.make_virtual_module() (APSW issue 465)

3.42.0.1

使用编译的SQLite SQLITE_OMIT_DEPRECATEDConnection.setprofile() 已从使用过时的 sqlite3_profilesqlite3_trace_v2 得出了相同的结果。包括合并时,将定义SQLITE_OMIT_DELPERATED。 (APSW issue 443 )

更新添加 various commands 以匹配SQLiteShell,以及代码和文档的改进。 (APSW issue 397 )

增列 Connection.read()apsw.ext.dbinfo() 提供来自数据库和日记/WAL文件的信息。Shell命令 .dbinfo 显示它。

增列 apsw.vfs_details() 。Shell命令 .vfslist 显示它。

已实施 VFS method xCurrentTimeInt64 。默认的SQLite VFS不再提供 xCurrentTime (浮点版本)如果 SQLITE_OMIT_DEPRECATED 是定义的,所以这是继承工作所必需的。 (APSW issue 451 )

Backwards incompatible changeVFS 如果您覆盖 xCurrentTime ,那么您将需要覆盖 xCurrentTimeInt64 以同样的方式,或 exclude xCurrentTimeInt64 在……里面 VFS ,或使用 iVersion1

速测 现在显示汇总统计信息,并改进了帮助文本。 (APSW issue 444 )

3.42.0.0

SQLITE_ENABLE_COLUMN_METADATA 在从安装APSW时启用 PyPI (二进制或源代码)。 (APSW issue 435 )

Type stubs 和在文档中键入信息使用较新的Python约定,例如 | 而不是 Unionlist 而不是 typing.List ,更简洁、更具可读性。(需要使用最新的Python才能使用它们,但它们在运行时不起作用。) (APSW issue 438 )

Shell:当SQLite准备语句时的错误现在显示查询的相关摘录,以及检测到错误的位置。

Shell:输出模式表(ASCII线条绘制,大量清理),框(Unicode线条绘制)和qbox(带引号的框)可用。Python3.7+ (APSW issue 420 )

Shell:如果以交互方式启动,则框模式为默认模式(列表仍为非交互方式的默认模式)

增列 Connection.pragma() 执行编译指示并获得结果。 (APSW issue 432 )

增列 Cursor.get 返回结构数量最少的查询结果。 (APSW issue 389 )

修复了执行跟踪程序应为仅注释查询返回注释文本,并添加 Cursor.has_vdbe 。 (APSW issue 433 )

确保为以下对象实施所有适用选项 apsw.config()Connection.config() 也很相似。 (APSW issue 431 )

Added apsw.sleep() (APSW issue 419)

的字符串 apsw.VFS.xNextSystemCall()interned 避免内存泄漏。 (APSW issue 430 )

检测CPython未处理的未绑定递归,并更好地处理。 (APSW issue 425 )

3.41.2.0

固定 APSW issue 412 在……里面 apsw.ext.make_virtual_module()

增列 apsw.connections() 才能获得所有的联系。 (APSW issue 416 )

sys.unraisablehook() 被正确调用 (APSW issue 410 )

在哪些方面更加严格 bool 期望值(例如 VTTable.BestIndex() ),只接受 intbool 。例如,以前您可以提供字符串和列表,这几乎可以肯定是意外错误。

3.41.0.0

Backwards incompatible change :使用带有缺失键的字典进行绑定现在会导致 KeyError 例外。您可以使用 allow_missing_dict_bindings() 以恢复旧有的行为。 (APSW issue 392 )

虚拟表格更新:

  • VTTable.BestIndexObject() 现在可用,它提供了 IndexInfo 暴露完全控制 (APSW issue 332APSW issue 329APSW issue 278APSW issue 188 )

  • IndexInfo.set_aConstraintUsage_in() can have in values passed all at once to VTCursor.Filter()

  • 中的例外 VTTable.FindFunction() 现在被报告为 unraisable exception 因为无法将该错误告知SQLite。

  • VTTable.FindFunction() 现在可以返回(int,Callable)以允许特定于虚表的函数重载。 (APSW issue 269 )

  • Added Connection.vtab_config() and Connection.vtab_on_conflict() (APSW issue 189, APSW issue 190)

  • Connection.createmodule() 让你拥有 eponymouseponymous_only 和只读模块。 (APSW issue 196 )

  • Virtual table updates can avoid having to provide all column values when only a subset are changing. See apsw.no_change, Connection.createmodule() use_no_change parameter, VTCursor.ColumnNoChange() and VTTable.UpdateChangeRow() (APSW issue 402)

  • All virtual table methods are supported - added iVersion 2 and 3. You can specify the iVersion in Connection.createmodule() (APSW issue 128)

  • apsw.ext.make_virtual_module() 使您可以非常轻松地将一个Python函数转换为一个虚拟的表模块。

  • apsw.ext.generate_series()apsw.ext.generate_series_sqlite() 添加了。 (APSW issue 380 )

apsw.format_sql_value() 现在输出浮点NaN、正负无穷大和带符号零,与SQLite完全一样 (APSW issue 398 )

增列 apsw.ext.format_query_table() 用于方便的表格输出,自动列大小、颜色、自动换行等。

增列 Connection.is_interrupted()

3.40.1.0

Implemented window functions (APSW issue 292)

Function flags 可以指定为 Connection.createscalarfunction()Connection.createaggregatefunction() 。增列 apsw.mapping_function_flags 。 (APSW issue 384 )

Added Connection.trace_v2() with apsw.mapping_trace_codes and apsw.mapping_statement_status (APSW issue 383)

Ensure all SQLite APIs are wrapped. Connection.system_errno, apsw.strlike(), apsw.strglob(), apsw.stricmp(), apsw.strnicmp(), Connection.filename_wal, Connection.filename_journal, Connection.table_exists(), Connection.column_metadata(), Error.error_offset, Connection.cacheflush(), Connection.release_memory(), apsw.hard_heap_limit(). Connection.drop_modules() (APSW issue 382)

当一个 unraisable exception 一旦发生, sqlite3_log 现在被调用,因此您将在SQLite的操作中获得上下文。 sys.unraisablehook 现在首先调用,如果它不存在,则 sys.excepthook 和以前一样。 (APSW issue 385 )

当为函数参数指定了错误的类型时,错误消息现在包括参数名称和函数签名。 (APSW issue 358 )

让SQLite执行大小检查,而不是针对字符串和BLOB的APSW。 (APSW issue 387 )

增列 apsw.ext.log_sqlite() 它安装了一个处理程序,用于将SQLite消息转发到 logging module

Added set_default_vfs() and unregister_vfs() taking vfs names. The test suite also unregisters ZipVFS (APSW issue 394)

3.40.0.0

修复了语句缓存UPDATE(版本3.38.1-r1)中的回归,其中查询中的尾随空格将被错误地视为未完成执行 (APSW issue 376 )

Added 各种有趣和有用的功能 (APSW issue 369)

Added more Pythonic attributes as an alternative to getters and setters, including Connection.in_transaction, Connection.exectrace, Connection.rowtrace, Cursor.exectrace, Cursor.rowtrace, Cursor.connection (APSW issue 371)

已完成:在CPythonAPI允许的范围内,每个项目都具有与本文档相同的文档字符串。每个API都可以使用命名参数。这个 type stubs 涵盖所有内容,包括常量。类型存根还包括所有内容的文档,例如,当您键入或悬停时,Visual Studio代码会显示这些文档。源代码中只有一个文档源,然后它会被自动提取,以在类型存根中生成文档、文档字符串和文档字符串。

example 更新,外观更好 (APSW issue 367 )。

3.39.4.0

增列 Connection.cache_stats() 以提供有关语句高速缓存的详细信息。

Cursor.execute() 现在使用 sqlite_prepare_v3 它允许供应 flags

Cursor.execute() 有一个新的 can_cache 参数来控制查询是否可以使用语句缓存。一个用法示例是与 authorizers 因为它们只在准备期间运行,已经缓存的语句不会发生这种情况。

( Cursor.execute() 其他参数仅限关键字,也存在于 Cursor.executemany() ,以及相应的 Connection.execute()Connection.executemany() 方法。)

增列 Cursor.is_readonlyCursor.is_explain ,以及 Cursor.expanded_sql

更新了对命名绑定的处理,以便注册到 collections.abc.Mapping (例如 collections.UserDict )也将被视为词典。 (APSW issue 373 )

3.39.3.0

如果没有使用SQLITE_ENABLE_COLUMN_METADATA编译APSW,但使用它单独编译了SQLITE3,则测试不再失败。APSW应该使用与sqlite3相同的标志进行编译,以匹配功能和API。 (APSW issue 363 )

--use-system-sqlite-config setup.py build_ext 添加选项以允许 build_ext 。 (APSW issue 364 )

3.39.2.1

PYPI现在包括了Python3.11版本。

现在,您可以直接运行几个工具,而不是使用脚本:

  • tests: python3 -m apsw.tests [options]

  • tracer: python3 -m apsw.trace [options]

  • speed tester: python3 -m apsw.speedtest [options]

  • shell: python3 -m apsw [options]

The shell class has moved from apsw.Shell to apsw.shell.Shell (APSW issue 356). You can still reference it via the old name (ie existing code will not break, except on Python 3.6).

:在Windows上,现在使用对颜色的本机控制台支持(以前支持第三方模块)。

can use --definevalues in setup.py build_ext 提供用于配置SQLite的编译器定义。 (APSW issue 357 )

如果启用了SQLITE_ENABLE_COLUMN_METADATA,则 Cursor.description_full 提供所有可用的列元数据。 (APSW issue 354 )

Connection.cursor_factory 属性现在存在,并在以下情况下使用 Connection.cursor() 被称为。增列 Connection.execute()Connection.executemany() 它会自动获取底层光标。看见 customizing connections and cursors提示 。 (APSW issue 361 )

3.39.2.0

Version numbering scheme change: 而不是一个 -r1 样式后缀,有 .0 样式后缀 (APSW issue 340 )

更新了对PyPI的构建,包括更多编译平台,包括aarch64(Linux)和Universal(MacOS)。由于PyPI提供了Windows二进制文件,因此不再单独提供它们。

当合并被包括在APSW中时, SQLITE_MAX_ATTACHED 如果未定义,则设置为125,而不是默认的10。

更新了打字信息存根,提供了更多详细信息,并包括文档字符串。这仍然在进行中,但核心功能已经被很好地覆盖了。 (APSW issue 338 ) (APSW issue 381 )

已更正 tips 扩展结果代码的日志处理程序 (APSW issue 342 )

Added Connection.db_names() (APSW issue 343)

3.38.5-r1

APSW现已安装在PYPI上,因此您可以:

pip install apsw

(感谢幕后的几个人,他们帮助制作了各种作品,使之成为现实。)

删除了对setup.py下载开发中(又名Fossil)版本SQLite的支持。

--版本等的Shell退出干净地退出 (APSW issue 210 )

Python3.11 (APSW issue 326 )现在起作用了。

Py3编译并在大部分情况下工作 (APSW issue 323 )。

3.38.1-r1

所有项目现在都有完整的文档字符串,包括类型信息。(以前只有一行摘要)。注C实现的函数和数据(即几乎所有的APSW)不能提供与常规Python代码相同级别的类型信息。

其中包括一个PYI文件,该文件确实提供了 type stub 格式,并由大多数IDE显示。

删除了3.7版之前仅与CPython3.7版本相关的代码、测试和文档。(Python3.6仍然可以运行,但已经寿终正寝了。)

关键字参数可以在任何地方使用。

语句缓存实现从字典更改为列表。这允许缓存多次用于相同的查询文本。(代码也是大小的四分之一,而且更简单)。

Py的FETCH命令的缺省设置是获取与APSW的发行版对应的SQLite版本。(之前它发布了最新版本。)

添加的常量:

  • SQLITE_INDEX_CONSTRAINT_OFFSET、SQLITE_INDEX_CONSTRAINT_LIMIT

3.37.0-r1

允许在包含 ConnectionCursor ,并且还使用来自该对象的回调(例如忙碌处理程序)。 (APSW issue 314 )

这是3.7之前支持Python2和Python3的最后一个版本。如果你仍然在使用那些版本的Python,那么你应该锁定这个APSW版本。 (More information _)。

Windows Python3.10二进制文件可供下载。此Python版本不再提供.exe格式。

修复了自定义VFS扩展加载失败可能会使错误消息未终止的问题。

对象使用的互斥数组的更新大小 fork checker

连接是使用SQLITE_OPEN_EXRESCODE打开的,因此打开错误还将包括扩展结果代码。

Connection.changes()Connection.totalchanges() 使用新的返回64位值的SQLite API(即现在可以返回大于20亿的值)。

增列 Connection.autovacuum_pages()

添加的常量:

  • SQLITE_CONSTRAINT_DATAYPE、SQLITE_OPEN_EXRESCODE

3.36.0-r1

已实施 Connection.serialize()Connection.deserialize() 。它们将数据库转换为字节,并分别将字节转换为数据库。

允许VFS的任何子类实现WAL,而不仅仅是直接子类。 (APSW issue 311 )

添加的常量:

  • SQLITE_FCNTL_EXTERNAL_READER、SQLITE_FCNTL_CKSM_FILE

3.35.4-r1

SQLite下载URL的更新(年份是URL的一部分)。

为内置的SQL数学函数添加了使能标志,并在默认情况下使用--Enable-all-扩展来启用它。

对Python3使用较新的缓冲区API(在Python3.10中删除了旧的API)。

3.34.0-r1

除了exe文件外,现在还提供了Windows MSI安装程序文件 (APSW issue 294 ),以及适用于Python3.6+的轮子。现在也可以使用Python3.9二进制文件。轮子可以通过管道安装。

增列 Connection.txn_state()

添加的常量:

  • SQLITE_IOERR_CORRUPTFS

3.33.0-r1

字符串处理的性能略有提高

Apsw模块显示游标、Blob和备份类型 (APSW issue 273 )

使用PKG-CONFIG检测 International Components for Unicode (ICU) sdkSQLite ICU extension 已启用。它将一如既往地回退到ICU-CONFIG。 (APSW issue 268 )。

添加的常量:

  • SQLITE_OPEN_SUPER_JOURNAL

3.32.2-r1

添加的常量:

  • SQLITE_IOERR_DATA、SQLITE_CORPORT_INDEX、SQLITE_BUSY_TIMEOUT、SQLITE_FCNTL_CKPT_START、SQLITE_FCNTL_RESERVE_BYTES

次要文档更新

3.31.1-r1

由于年份变化而进行的各种更新

修复了Shell中不推荐使用的通用换行符 (APSW issue 283 )

壳牌现在使用 pragma function_list 获取用于制表符完成的函数列表

添加的常量:

  • SQLITE_DBCONFIG_TRUSTED_SCHEMA、SQLITE_DBCONFIG_REGISTICE_FILE_FORMAT、SQLITE_CONSTRAINT_PINNED、SQLITE_OK_SYMLINK、SQLITE_CANTOPEN_SYMLINK、SQLITE_FCNTL_CKPT_DONE、SQLITE_OPEN_NOFLOW、SQLITE_VTAB_DIRECTONLY

3.30.1-r1

添加的常量:

  • SQLITE_DBCONFIG_ENABLE_VIEW

更新了SQL语句的散列 (APSW issue 274 )

可使用Python3.8Windows二进制文件。

3.29.0-r1

添加的常量:

  • SQLITE_DBCONFIG_DQS_DML、SQLITE_DBCONFIG_DQS_DDL、SQLITE_DBCONFIG_LEGICATE_ALTER_TABLE

已更新 Connection.config() 全部为当前 SQLITE_DBCONFIG 常量。还修复了 APSW issue 249

3.28.0-r1

添加的常量:

  • SQLITE_DBCONFIG_WRITABLE_SCHEMA

3.27.2-r1

添加的常量:

  • SQLITE_CONFIG_MEMDB_MAXSIZE、SQLITE_FCNTL_SIZE_LIMIT

添加了对Geopoly扩展的支持 (APSW issue 253 )

删除了不再有用的哈希优化 (APSW issue 256 )

3.26.0-r1

添加的常量:

  • SQLITE_DBCONFIG_DEFENSIVE

3.25.2-r1

添加的常量:

  • SQLITE_INDEX_CONSTRAINT_Function、SQLITE_CANTOPEN_DIRTYWAL、SQLITE_ERROR_SNAPSHOT、SQLITE_FCNTL_DATA_VERSION

为了兼容,Shell输出模式现在有行和列 (APSW issue 214 )

Example现在可以在Python2和3下运行。

3.24.0-r1

添加的常量:

  • SQLITE_DBCONFIG_RESET_DATABASE及其在中的支持 Connection.config()

  • SQLITE_LOCKED_VTAB和SQLITE_CORPORT_SEQUENCE扩展结果代码

增列 keywords 并更新了Shell以使用它。

提供了Python3.7Windows二进制文件。

3.23.1-r1

添加的常量:

  • SQLITE_DBSTATUS_CACHE_SPILL、SQLITE_FCNTL_LOCK_TIMEOUT

3.22.0-r1

添加的常量:

  • SQLITE_DBCONFIG_TRIGER_EQP、SQLITE_DBCONFIG_MAX

  • SQLITE_READONLY_CANTINIT、SQLITE_ERROR_RETRY、SQLITE_ERROR_MISSING_COLLSEQ、SQLITE_READONLY_DIRECTORY

3.21.0-r1

添加的常量:

  • SQLITE_INDEX_CONSTRAINT_ISNULL、SQLITE_INDEX_CONSTRAINT_ISNOT、SQLITE_INDEX_CONSTRAINT_ISNOTNULL、SQLITE_INDEX_CONSTRAINT_IS和SQLITE_INDEX_CONSTRAINT_NE

  • SQLITE_CONFIG_SMALL_MALLOC

  • SQLITE_IOCAP_BATCH_ATOMIC

  • SQLITE_IOERR_ROLLBACK_ATOM、SQLITE_IOERR_COMMIT_ATOM和SQLITE_IOERR_BEGIN_ATOM

  • SQLITE_FCNTL_COMMIT_ATOM_WRITE、SQLITE_FCNTL_ROLLBACK_ATOM_WRITE和SQLITE_FCNTL_BEGIN_ATOM_WRITE

许多拼写修复(感谢Edward Betts的评论)

3.20.1-r1

增列 SQLITE_DBCONFIG_ENABLE_QPSG 常量。

添加了Shell.Open命令 (APSW issue 240 )

3.19.3-r1

APSW没有变化。

3.18.0-r1

更新了Shell中的完成(如添加了杂注)。

Resumable Bulk Update (RBU) 扩展模块现在默认情况下是为 --enable-all-extensions

增列 Connection.set_last_insert_rowid()

3.17.0-r1

APSW没有变化。

3.16.2-r1

添加了Python3.6版本。

添加了SQLITE_DBCONFIG_NO_CKPT_ON_CLOSE和SQLITE_FCNTL_PDB常量。

3.15.2-r1

APSW没有变化。

3.15.1-r1

添加了SQLITE_FCNTL_Win32_GET_HANDLE常量。

3.15.0-r1

添加了SQLITE_DBCONFIG_MAINDBNAME常量。

3.14.1-r1

添加了SQLITE_DBSTATUS_CACHE_USED_SHARED和SQLITE_OK_LOAD_PERFORMENT常量。

3.13.0-r1

添加了SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION常量。

在下载页面中添加了一个pip命令行。

3.12.2-r1

打电话 PyUnicode_READY 适用于Python3.3及更高版本。修复 APSW issue 208APSW issue 132APSW issue 168

SQLite 3.12完全改变了 VFS.xGetLastError() 以一种不相容的方式。这需要重写相关的C、Python和测试代码。如果您实现或使用此方法,则还必须重写代码。还要注意的是,在此版本或未来的SQLite版本上运行来自APSW早期版本的测试套件将导致消耗所有内存、交换或地址空间(底层整数更改了含义)。

添加了SQLITE_CONFIG_STMTJRNL_SPILL和SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER常量。

在中添加了对SQLITE_CONFIG_STMTJRNL_SPILL的支持 apsw.config()

3.11.1-r1

在退回到distutils之前,setup.py尝试使用setupTools(如果存在)。这只允许像bdist_heel这样的setupTools命令工作。您可以通过将环境变量APSW_FORCE_DISTUTILS设置为任何值来强制使用distutils。请注意,setupTools还可能影响输出文件名。 (APSW issue 207 )

3.11.0-r1

现在,Shell转储命令可以输出页面大小和用户版本。他们之前都是作为评论输出的。

更新了2016文件夹的SQLite下载逻辑。

由于SQLite默认VFS实现的方法发生更改,更新了VFS测试套件。

添加了SQLITE_INDEX_CONSTRAINT_LIKE、SQLITE_INDEX_CONSTRAINT_REGEXP、SQLITE_INDEX_CONSTRAINT_GLOB、SQLITE_IOERR_AUTH、SQLITE_FCNTL_Journal_POINTER和SQLITE_FCNTL_VFS_POINTER常量。

允许 Connection 备份API的子类 (APSW issue 199 )。

FTS5JSON1 现在默认情况下,扩展模块是为 --enable-all-extensions 。建议您再等几个版本,让这些扩展成熟。

添加了一个映射 virtual table scan flags

使用 SQLITE_ENABLE_API_ARMOR 用于额外的错误检查。

3.9.2-r1

添加了SQLITE_IOERR_VNODE常量。

现在提供了适用于Python3.5的Windows版本。

3.8.11.1-r1

添加了SQLITE_FCNTL_RBU和SQLITE_FCNTL_ZIPVFS常量。

安装程序的FETCH命令现在可以获取任意化石版本。例如,指定 fossil-e596a6b6

由于Python3.5中的更改而更新测试(从TypeError更改为ValueError的系统调用返回了带有无效字符串的异常)。

调整了一些与 fork checker

3.8.10.1-r1

Added deterministic parameter to Connection.createscalarfunction() (APSW issue 187)

Switched to new SQLite API returning 64 bit values for status() (APSW issue 191)

3.8.9-r1

修复了可在同一执行中的多个语句之间保留的列描述缓存 (APSW issue 186 )

更新了文档构建工具,以使用来自SQLite站点的新信息数据库。这更简单、更可靠。(以前使用的站点抓取。)

添加了SQLITE_AUTH_USER、SQLITE_FCNTL_LAST_ERRNO、SQLITE_FCNTL_WAL_BLOCK、SQLITE_FCNTL_GET_LOCKPROXYFILE和SQLITE_FCNTL_SET_LOCKPROXYFILE常量。

删除了SQLITE_GET_LOCKPROXYFILE、SQLITE_SET_LOCKPROXYFILE、SQLITE_LAST_ERRNO文件控制常量。已弃用-请使用名称中包含FCNTL的版本(例如SQLITE_FCNTL_GET_LOCKPROXYFILE)。

增列 mappings 对于冲突解决模式,虚拟表配置选项和xShmLock VFS标志。

3.8.8.2-r1

APSW没有变化。

3.8.8.1-r1

现在,在查询过程中,列描述在第一次请求时被缓存,因此,如果为每一行调用列描述,那么获取它会很快。

添加了SQLITE_CONFIG_PCACHE_HDRSZ和SQLITE_CONFIG_PMASZ常量,并在中支持它们 config()

添加了SQLITE_CHECKPOINT_TRUNCATE常量。

将各地的年份更新为2015年。

3.8.7.3-r1

APSW没有变化。

3.8.7.2-r1

修复了对ICU-CONFIG标志的解析

3.8.7.1-r1

添加了SQLITE_LIMIT_WORKER_THREADS常量

3.8.6-r1

更新了Python3.4单元测试垃圾收集更改的测试套件 (APSW issue 164 APSW issue 169 )

使用推荐的生成选项 --enable-all-extensions 打开 STAT4 。Windows二进制文件也包括这一点。

3.8.5-r1

添加了SQLITE_IOCAP_IMMOTABLE和SQLITE_FCNTL_Win32_SET_HANDLE常量。

3.8.4.3-r1

增列 Cursor.fetchone()

3.8.4.2-r1

未更改APSW代码。由于更新了SQLite版本而重新生成。

3.8.4.1-r1

适用于Python3.3+的Windows 64位二进制版本又回来了--这要归功于Mike C.Fletcher pointing the way

从下载页面正确检测到当前的SQLite版本 setup.py FETCH命令

针对Python3.4和Windows二进制文件进行了测试。

3.8.3.1-r1

已更新 关键字、函数和语用的补全。

3.8.3-r1

APSW现在托管在github-https://github.com/rogerbinns/apsw

添加了SQLITE_RECURSIVE、SQLITE_READONLY_DBMOVED、SQLITE_FCNTL_COMMIT_PHASETWO、SQLITE_FCNTL_HAS_MOVED和SQLITE_FCNTL_SYNC常量。

3.8.2-r1

添加了SQLITE_CONFIG_WIN32_HEAPSIZE、SQLITE_CONSTRAINT_ROWID和SQLITE_FCNTL_TRACE常量。

3.8.1-r1

添加了SQLITE_CANTOPEN_CONVPATH和SQLITE_IOERR_CONVPATH扩展错误代码。

已更新pysqlite URL以指向GitHub。

各种次要的构建/下载文档更新。

3.8.0.2-r1

未更改APSW代码。由于更新了SQLite版本而重新生成。

更新了文档提示,以显示如何 get detailed diagnostics

3.8.0.1-r1

APSW没有变化。由于更新了SQLite版本而重新生成。

Windows的Python3.364位二进制文件不再可用,因为Visual Studio的更新消除了编译它们的能力,我已经没有耐心与微软的工具作斗争了。

3.8.0-r2

无APSW更改-更新了校验和,因为SQLite更改了已发布的归档文件以解决某些平台上的自动会议问题

3.8.0-r1

在设法让几个微软软件合作后,现在可以使用适用于Python3.364位的Windows二进制文件。

修复了当系统例程(如时间戳、用户名、主机名)无法自动升级为Unicode时的Shell转储问题。它们在输出的注释中使用。 (APSW issue 142 )

添加了SQLITE_DBSTATUS_DEFERED_FKS、SQLITE_IOERR_GETTEMPPATH、SQLITE_WARNING_AUTO INDEX和SQLITE_BUSY_SNAPSHOT常量。

3.7.17-r1

删除了直接检查使用负偏移量或数量调用VFS读/写返回错误的测试。在这些情况下,此版本的SQLite不再返回错误,而通常会崩溃。

各种新的常量。

3.7.16.2-r1

APSW没有变化--只是二进制重建。建议Windows用户升级他们的SQLite版本。

3.7.16.1-r1

中的函数和实用表的更新 以匹配当前的SQLite版本。

3.7.16-r1

调整以适应不同的SQLite下载URL

添加了SQLITE_CONSTRAINT_*和SQLITE_READONLY_ROLLBACK extended error codes

已删除CouchDB虚拟表

3.7.15.2-r1

无APSW更改-二进制重建以获取新的SQLite版本

3.7.15.1-r1

对SQLite网站引用(下载和文档链接)使用HTTPS(SSL)。在某些平台/版本/SSL库上,Python的SSL模块 doesn't work 使用SQLite网站,因此使用了到http的后备-下载仍然验证了它们的校验和。

3.7.15-r1

在要求VFS xDelete方法删除不存在的文件时,解决错误处理的更改语义。

完全删除了所有 AsyncVFS 相关代码。此扩展名为 no longer maintained nor supported 由SQLite团队提供。 WAL 是获得类似功能的好方法。

增列 config() 支持SQLITE_CONFIG_COVERVER_INDEX_SCAN。

添加了几个新常量:SQLITE_CONFIG_COVERING_INDEX_SCAN、SQLITE_CONFIG_SQLLOG、SQLITE_FCNTL_BUSYHANDLER、SQLITE_FCNTL_TEMPFILENAME、SQLITE_CANTOPEN_FULLPATH、SQLITE_IOERR_DELETE_NOENT

3.7.14.1-r1

更新了设置和测试套件,以便显式关闭所有文件,而不是依赖垃圾回收。

添加了适用于Python3.3的Windows二进制文件。(只有32位,因为Python不提供生成64位Windows二进制文件的免费方法。)

更新了setup.py,以便在检测到最新版本时使用更改的SQLite下载页面格式。

由于一项 Python 3.3.0 regression bug 在Shell中使用CSV输出模式可能会导致错误数据或Python崩溃。该错误已在2012年11月发布的Python3.3.1中得到修复。

3.7.14-r2

修复了函数析构函数中GIL的一个问题。如果您创建了一个与现有函数同名的函数,并且使用的是即将发布的版本的Python(如2.7.4),则会遇到该错误。感谢Arfrever Frehtes Tafersar Arahesis找到了它 (APSW issue 134 )。

添加了shell.print命令以匹配即将进行的SQLiteShell更改。

3.7.14-r1

添加了对以下各项的支持 Connection.status() (来电 sqlite3_db_status )。

传统的Windows Compiled Help Format 不再生成文档-帮助编译器安装程序不能处理现代机器。

3.7.13-r1

不要在注册虚拟表模块失败时释放结构,因为SQLite无论如何都会这样做。

添加了SQLITE_OPEN_MEMORY常量。

3.7.12.1-r1

APSW没有变化。由于SQLite错误修复而进行的二进制重建。

3.7.12-r1

已重新启用异步cvf。

增列 Cursor.description 使DB API互操作性更简单 (APSW issue 131 )。

添加了SQLITE_DBSTATUS_CACHE_WRITE和SQLITE_CANTOPEN_ISDIR常量。

3.7.11-r1

添加了SQLITE_ABORT_ROLLBACK和SQLITE_FCNTL_PRAGMA常量。

增列 Connection.readonly()

变化 Connection.filename 它过去返回用于打开数据库的字符串,现在返回绝对路径名。

增列 Connection.db_filename()

3.7.10-r1

VFS例程中返回的默认扇区大小为4,096,以匹配SQLite的新默认大小。

更新了几个指向SQLite票证和文档的链接 (APSW issue 122 )。

由于异步VFS的代码中存在一个错误,导致在处理文件名时随机读取内存,因此该VFS被禁用。

添加了SQLITE_CONFIG_GETPCACHE2、SQLITE_CONFIG_GETPCACHE2、SQLITE_FCNTL_POWERSAFE_OVERWRITE、SQLITE_FCNTL_VFSNAME和SQLITE_IOCAP_POWERSAFE_OVERWRITE常量。

修复了当SQLite不从视图声明中去掉尾随注释时的Shell转储 (discussed here _)

添加了一个 URIFilename 类来封装SQLite如何向VFS例程提供URI参数 (APSW issue 124 )。

兼容性中断:根据标志的不同,VFS xOpen方法可能会获得 URIFilename 或文件名的字符串。您仍然可以将其中一个传递给 VFSFile

兼容性突破: vfs 用于始终运行您通过 VFS.xFullPathname() 。对于URI路径名,这是不可能的,因此代码已被删除。如果您为以下对象构造文件名 VFS.xOpen() 直接(即绕过SQLite数据库打开调用),则必须调用 VFS.xFullPathname() 首先要确保将相对路径名转换为绝对路径名。SQLite API保证传递给 VFS.xOpen() 正是从那里返回的 VFS.xFullPathname()

3.7.9-r1

添加了SQLITE_DBSTATUS_CACHE_HIT、SQLITE_DBSTATUS_CACHE_MISSING和SQLITE_FCNTL_OVERWRITE常量。

3.7.8-r1

由于未记录的VFS xDelete语义更改,更新了文档和测试。

添加了SQLITE3_FCNTL_PERSISTEN_WAL和SQLITE3_FCNTL_Win32_AV_RETRY file controls

包装的SQLITE3_Sourceid (APSW issue 120 )

3.7.7.1-r1

增列 SQLITE_CONFIG_URI 和对它的支持 config() ,和开始标志 SQLITE_OPEN_URI 。这使得它更易于使用 URI filenames

这个 现在使用 URI filenames 默认情况下。

新的 extended error constants 用法:SQLITE_Corrupt_VTAB、SQLITE_IOERR_SEEK、SQLITE_IOERR_SHMMAP、SQLITE_READONLY_CANTLOCK和SQLITE_READONLY_RECOVERY。

64位平台 (LP64 - most non-Windows _)和Python2:对于64位整数,返回的是Pythonint类型,而不是PythonLong类型。

3.7.6.3-r1

在通过调用 apsw.shell.main() 如果您将SQL命令作为命令行参数提供,它将不会变得交互。这将具有与SQLiteShell相同的行为 (APSW issue 115 )。

该Shell有一个 .find 命令,使得在某些或所有表的所有列中搜索值变得很容易。

该Shell有一个 .autoimport 命令可以方便地导入数据文件,自动推断分隔符、列名和数据类型。

检测试图将游标用作其自身的输入数据。

3.7.6.2-r1

固定 APSW issue 117 其中,Shell程序可能会在更改某些操作系统的输出目标时报告I/O错误。感谢埃德扎德·帕斯马发现并诊断了这一点。

添加了对VFS版本3的支持,该版本允许重定向 system calls 由一些VFS实现使用(例如,用于测试或沙箱)。

NotFoundError 已添加例外。

增列 Connection.config()

已更新 Connection.wal_checkpoint() 使用 sqlite3_wal_checkpoint_v2 它对检查点提供了更细粒度的控制,并返回有用的信息。

3.7.5-r1

SQLite 3.7.5中的向后不兼容更改,用于处理 xFileControl() 。如果在VFS中实现此方法,则必须返回True或False以指示是否可以理解该操作。 Connection.filecontrol() 现在返回该值。(以前,您无法区分被理解的OP和导致的错误,或者根本不被理解的OP。)

Windows Python3.2二进制文件现已可用。

3.7.4-r1

适用于Windows 64位版本的二进制文件下载现已可用。

apsw.softheaplimit() 现在使用 sqlite3_soft_heap_limit64 因此,您可以提供大于2 GB的值。现在,它还可以返回以前的值,而不是NONE。

改进了获取64位Windows的Shell计时器信息。

Blob.reopen() 已经实施了。

FTS4已启用,并且处于二进制版本中。注意,它是FTS3的增强,而不是完全独立的代码,在 SQLite documentation

3.7.3-r1

可以使用以下命令将BLOB读取到预先存在的缓冲区中 Blob.readinto() 。(这比分配新缓冲区更有效,因为 Blob.read() 然后进行复制。) (APSW issue 109 )。

修复了Shell中CSV模式下Unicode输出的错误。

sqlite_create_function_v2 现在意味着一些内务APSW可以被推回到SQLite上,从而删除一些代码

3.7.2-r1

APSW没有变化。升级到此版本的SQLite是 recommended

3.7.1-r1

更新了各种常量,包括 SQLITE_FCNTL_CHUNK_SIZE 与以下内容一起使用 Connection.filecontrol()

修复了带有来自Shell的某些文件对象的Unicode输出 (APSW issue 108 )。

使用Shell,您可以指定对输出编码中不存在的字符的处理(例如,替换为使用‘?’或类似、忽略、xmlcharrefreplace等)。例如::

.encoding cp437:replace

3.7.0.1-r1

修复了使用跟踪程序且上下文管理器无法提交时的问题。

3.7.0-r1

添加了几个新常量。

Write Ahead Loggingsupported 。如果WAL模式可用,您可以通过使用 connection hooks

增列 format_sql_value() 用于从值生成SQL语法字符串。这是用C实现的,比用Python语言进行相同的格式化要快得多。

使用上面的函数和其他调整 Dumper现在的速度是原来的三到四倍。感谢尼古拉斯·拉特指出问题并提供测试数据。

Shell现在进行颜色突出显示,在输出到终端时,可以很容易地在视觉上区分提示、错误、标题和值类型。请参阅 --no-colour argument and .colour command. Those of you in the two countries that have not adopted the metric system may also omit the 'u'. For Windows users you won't get colour output unless you install colorama

使用上下文管理器(WITH语句)时 Connection 并且退出提交出现错误,则回滚事务。如果SQLite已将事务完全缓冲在内存中,并且已获得非急用事务锁,则可能会发生这种情况。感谢杰夫·内斯发现了问题所在。 (APSW issue 98 )。

修复了创建虚拟表实例时返回错误(例如无效列名)的错误。在修复之前,您会收到上一条错误消息或崩溃。感谢何塞·戈麦斯发现了问题所在。 APSW issue 103

现在有一个适用于Ubuntu用户的PPA,它与APSW和https://launchpad.net/~ubuntu-rogerbinns/+archive/apsw上的SQLite保持同步,其中静态嵌入了最新的SQLite(即系统SQLite被忽略),并启用了所有扩展:FTS3、RTree、icu、asyncvf

如果直接打开VFS文件,则文件名始终首先通过xFullPath名运行。SQLite保证了这一行为,但现有的VFS代码没有为直接打开做这件事。从SQLite打开就是这样做的。

修复了以下错误 apsw.connection_hooks 都是在 statement cache 已初始化,如果有任何挂钩执行SQL代码,则会导致崩溃。

3.6.23.1-r1

更正了Python3.1下的Shell CSV输出(解决了Python3.1 StringIO错误/与其他Python版本不兼容)。

简化了对Shell程序的访问 database 从API。

添加了一个Shell example

3.6.23-r1

如果安装程序正在下载文件并出现错误,则会重试最多5次。

添加了SQLITE_CONFIG_LOG和SQLITE_OPEN_AUTOPROXY常量。

增列 compile_options 它告诉您编译SQLite时使用的编译定义。

增列 log() 调用SQLite日志记录接口,并更新 config() 因此您可以设置日志目的地函数。

3.6.22-r1

使运行distutils‘sdist’成为可能,其来源已经由‘sdist’制成。这对于某些Python虚拟包环境是必要的。请注意,递归结果不包括HTML帮助,因为distutils无法在父级位置包含内容。 APSW issue 89

在进行转储时,各种设置作为杂注语句输出,例如页面大小、编码、AUTO_VAUM等。杂注被注释掉。 APSW issue 90

3.6.21-r1

源代码和二进制文件现在经过数字签名,这意味着您可以验证它们是否被篡改。看见 验证您的下载 以获取说明。

为Shell转储生成的编译指示在事务外部发出,因为它们在事务内不起作用。

删除了CouchDB虚拟表代码中留下的一些无意的日志记录代码。

3.6.20-r1

已取消对Python3.0的支持 end of lifed 。使用Python3.1及更高版本。

更改某些语句的使用方式 prepared 以允许使用SQLite 3.6.20中引入的绑定变量的新范围和LIKE优化。看见 APSW issue 85 长长的血淋淋的细节。

您现在可以访问 CouchDB 使用虚拟桌子。这使您可以轻松地在SQLite和CouchDB之间双向传输数据,同时处理两个源中的数据。其他示例用法在文档中有介绍。

Shell 更改:

  • .ump命令现在以视图创建的顺序输出视图,而不是按字母顺序输出,因为视图可以相互引用。 APSW issue 82

  • .ump命令现在可以输出 user_version 作为一种评论。一些程序(如Firefox)使用它来跟踪模式版本。

  • 现在可以在 JSON

  • 固定 APSW issue 83 -如果历史文件不存在,则异常

  • 通过指定负宽度,可以在列模式下右对齐输出。 APSW issue 84

  • 如果数据库中有一个虚表,但没有加载模块,则不再执行完成操作的回溯。 APSW issue 86

  • 现在,您可以使用“.EXCEPTION ON”命令获取包括局部变量在内的详细回溯。这在开发虚拟表和类似功能时很有用。

  • 现在,您可以在一行上单独使用“GO”或“/”来终止SQL语句。

3.6.19-r1

Backwards incompatible change 固定 APSW issue 72 其中APSW不是以零为基数的虚表 BestIndex() 以文档形式返回的约束。如果您有可用的BestIndex代码,则需要针对此版本对其进行更新。感谢Lefteris发现了这个问题。

Backwards incompatible change 这个 complete() 方法已从 Connectionapsw 它应该一直在那里。你现在应该打电话给 apsw.complete() 取而代之的是。(它甚至有一个示例显示它是模块的一部分,而不是特定的连接!)

现在有一个 interactive shell 与此非常相似 provided by SQLite 。您可以将它嵌入到您自己的程序中,从它继承以提供更多命令和输出模式,或者只需像这样运行它::

$ python -c "import apsw ; apsw.main()"

添加了 SQLITE_LIMIT_TRIGGER_DEPTHSQLITE_OPEN_PRIVATECACHESQLITE_OPEN_SHAREDCACHE 常量。

这个 setup.py 文件现在提供了各种选项,使其仅适用于相应的命令。请阅读 updated documentation

您现在可以指定 build --enable=stat2 to setup.py to enable advanced statistics gathering 用于查询规划。

setup.py 可以自动为您获取asyncvfs扩展名。如果源在构建APSW时存在,则它将自动包括在内,并且 async_initialize 打了个电话。

A fork_checker() 可用,当您在分支(A)上使用SQLite对象时,它会打开检测 very 坏事)。这在类似于Unix的操作系统上是可能的,尤其是在您使用 multiprocessing module

扩展加载现在默认情况下在使用合并时编译进来,在使用现有库时编译出来。这更有可能与您的机器匹配。您可以使用 --omit=load_extension--enable=load_extension BUILD/BUILD_EXT命令以显式禁用/启用扩展加载。 APSW issue 67

setup.py 现在将在没有校验和的下载上中止。看见 more information 关于校验和的。

setup.py 还可以在发布之前获取当前正在开发的SQLite版本。使用 --version=fossil

更新了哪些代码使用 experimental SQLite APIs 基于SQLite中的更改。测试套件也将在实验打开或关闭的情况下正常工作。(默认情况下该选项处于启用状态。)

3.6.18-r1

APSW许可证已更新,允许您(根据您的选择)使用 OSI approved license

这个 速测 已更新为(可选)使用Unicode字符并(可选)增加数据项的大小。

修复了错误处理代码,以便在某些不必要的情况下不记录SQLite错误字符串。这会导致代码执行得更快一些。

3.6.17-r1

APSW已从Subversion迁移到 Mercurial 用于源代码控制。托管保持在 Google Code

由于VFS xUnlock错误现在有时会被SQLite忽略,因此更新了测试(Cvstrac 3946)。

帮助中的下载页面没有提到Windows Python3.1安装程序。

运行测试套件现在集成到 setup.py 因此,您可以一次性完成构建和测试。示例命令行::

$ python setup.py install test

测试套件现在将检查FTS3、RTree和ICU扩展的功能(如果包括)。(默认情况下,Windows二进制分发包括FTS3和RTree。)

固定 APSW issue 55 其中,在Windows二进制分发中无意中省略了FTS3。

各种文档更新。

3.6.16-r1

Windows二进制分发版包括Python3.1。

微不足道的调整,让MSVC满意。

3.6.15-r1

固定 APSW issue 50 哪里 Blob.read() 又回来了 None 在文件末尾,而不是记录的(且正确的)空字符串/字节。

更正了中选项的拼写 apswtrace 并且只有在启用了SQL跟踪的情况下才输出CURSORFROM。

3.6.14.2-r1

更新了测试代码,因为SQLite 3.6.15在尝试注册带有太多参数的函数时返回不同的错误代码(请参见cvstrac 3875)。

3.6.14.1-r1

更改了一些内部符号名称,以便它们不会与SQLite在合并中使用的类似新名称冲突。

增列 apsw.using_amalgamation 因此,您可以判断APSW是否是使用 SQLite amalgamation 。使用合并意味着不使用SQLite共享库,也不会影响您的代码。

添加了一个校验和文件,以便在 setup.py 下载SQLite,我们知道它没有被篡改。( --fetch-sqlite 参数可用于自动下载SQLite。)

3.6.13-r1

添加了SQLITE_LOCKED_SHAREDCACHE extended error code

更新的测试,因为SQLite中的VFS删除错误处理代码现在在Windows和非Windows之间返回相同的高级错误代码。

由Windows HTML帮助编译器生成的CHM格式帮助文件在Windows HTML帮助查看器下再次可见。

3.6.11-r1

您现在可以使用 hot backup functionality 在SQLite 3.6.11中引入。

更新了VFS测试,以反映SQLite基础错误处理中的更改。(以前,SQLite几乎总是返回 FullError 任何有错误但现在返回的写入 SQLError 。)

更改了关闭方法,以便可以更早地释放连接。

在以前的版本中, closed cursor 仍可使用(转世)。现在不再是这样了,你会得到 CursorClosedError

3.6.10-r1

您可以将该数据库用作 context manager 如中所定义 PEP 0343 。当您使用 with 开始一项交易。如果块结束时出现异常,则回滚事务,否则提交事务。看见 Connection.__enter__() 举个例子。

Behind the scenes the savepoint functionality introduced in SQLite 3.6.8 is used. Consequently Connection with blocks can be nested. If you use Connection level execution tracers then they will be called with the savepoint SQL statements.

您还可以使用 blobs 作为上下文管理器,确保在使用完它时始终关闭它。看见 Blob.__enter__() 举个例子。

增列 constants

  • SQLITE_SAVEPOINT(授权者代码)

  • SQLITE_IOERR_CLOSE(扩展结果代码)

  • SQLITE_IOERR_DIR_CLOSE(扩展结果代码)

  • 新映射:SQLITE_FCNTL_LOCKSTATE、SQLITE_GET_LOCKPROXYFILE、SQLITE_SET_LOCKPROXYFILE、SQLITE_LAST_ERRNO。除了第一个之外,SQLite没有记录这些功能的用途。

已更新 vfs 测试代码。SQLite的例程调用 VFSFile.xTruncate() 用于忽略错误,但现在向调用方返回错误。 VFSFile.xFileControl() 现在被调用,因此用户实现的必须调用它继承的任何基以使SQLite正常运行。

更新了xDlSym VFS例程,以具有SQLite 3.6.7中更改的不同但兼容的类型签名,以处理迂腐的编译器警告。

修复了中的错误 apswtrace 这可能会导致时间格式不佳。对于打印在最终报告中的查询,前导注释也会被剥离。您还可以请求报告的子集。

这个 速测 如果脚本找不到外部安装的pysqlite,它现在将退回到Python内置的sqlite3模块。

3.6.6.2-r1

可下载适用于Python3.0的Windows二进制文件。

在数据结构和容器中进行各种更改以减少代码大小。

已更改代码以处理SQLite错误,以仅使用Python功能而不使用操作系统功能(线程本地存储)。这也解决了 APSW issue 36 Vista与XP的二进制不兼容。感谢鲁道夫·加尔特纳在检测和诊断这个问题方面的帮助。

Connectionscursorsblobs 可由以下用户使用 weak references

您现在可以安装 Connectionexecutionrow tracers

用于执行的回调和行跟踪器具有不同的签名,以包括发生执行或行的游标。这是一个向后不兼容的更改。看见 tracing 了解更多细节。

由于大众的需求,补充说 Cursor.fetchall() 。这是一种较长的打字方式 list(cursor)

将属性添加到 Connection 班级- filenameopen_flagsopen_vfs 。这些可以让您跟踪数据库是如何打开的。

添加了一个 apswtrace 脚本,无需修改代码即可轻松跟踪SQL。

恢复使用较旧的SQLite API以解决cvstrac 2158问题。(这还可以节省一点SQLite内存使用量)。用户可见的效果是,根据查询是否已在 statement cache 或者如果你是多线程的。例如,如果您的查询使用未知归类,则SQLite的 prepare 退货 SQLITE_ERROR 包含有关错误排序规则的错误文本。如果已准备好查询,则删除归类,然后 run 新的SQLite例程返回 SQLITE_SCHEMA 和通用的 schema changed 错误文本。更改用户定义的函数也可能导致以前正确的查询变得无效。

3.6.5-r1

该分发版现在包括一个 速测 剧本。您可以使用它来查看APSW相对于pysqlite的性能,或者跟踪不同SQLite版本之间的性能差异。基础查询派生自 SQLite's speed test

语句缓存已完全重写。它使用的内存更少,可伸缩性也明显更好。

在使用相同的时,可能会在Python Gil和SQLite数据库互斥锁之间出现死锁 Connection 跨多个线程。通过在更多地方释放GIL并添加了检查源代码以验证GIL/互斥处理的测试,修复了此问题。感谢Amitas报道这一点 APSW issue 31

SQLite的API已在3.6.5中进行了扩展,因此可以以线程安全的方式检索错误。APSW现在使用此API。

由于前两项更改,现在可以安全地使用相同的 Connection 跨任意多个线程 concurrently

文档现在通过以下方式完成 Sphinx 这允许更丰富的文档和更多的输出格式,如PDF和 Windows CHM 格式化。

Windows的二进制分发版包括 full text search (FTS)和 Rtree 分机。另请参阅 构建过程

对源代码结构和文件进行了重新组织,以便更清楚地说明在哪里执行任务,并使自动提取文件变得更容易。

3.6.3-r1

您现在可以编写您自己的 VFS 在Python中。您还可以从现有的VFS继承,这样就可以轻松地增加或覆盖少量行为,而不必编写其他所有代码。请参阅 example 其中通过对数据库文件的内容进行异或操作来对其进行模糊处理。

setup.py 现在使用可选的 --fetch-sqlite[=ver] 参数自动下载并使用最新的SQLite合并(或指定的版本)。在非Windows平台上,它还将确定SQLite需要哪些编译标志(例如 HAVE_USLEEPHAVE_LOCALTIME_R )。其他几个选项可用于 setup.py 还可用于控制启用/省略某些特性和功能。看见 building 了解更多细节。

APSW检查SQLite是否已编译为 threadsafe

添加了新常量:

  • SQLITE_IOERR_ACCESSSQLITE_IOERR_CHECKRESERVEDLOCKSQLITE_IOERR_LOCK 扩展结果代码

  • SQLITE_OPEN_NOMUTEXSQLITE_OPEN_FULLMUTEX 打开标志

  • 几个新的 SQLITE_CONFIGSQLITE_STATUS 代码

包装了几个新的SQLite API:

以下实验性API没有包装,因为您无法对它们执行任何有用的操作(目前为止):

恢复了有关PythonINT和LONG的先前行为,返回适合有符号32位的数字的INT。这只会影响到Python2,因为Python3只使用Long。感谢Joe Pham对此的报道 APSW issue 24

增列 Connection.sqlite3pointer() 要帮助的方法 APSW issue 26

3.5.9-r2

APSW现在可以与Python3一起使用(您需要3.0b1或更高版本)。

(APSW issue 17 )删除了 SQLITE_MAX_ 常量,因为它们可能是不可靠的(例如,APSW无法知道共享库是用什么编译的)。中记录了一种解决方法 Connection.limit()

3.5.9-r1

APSW现在托管在https://code.google.com/p/apsw上

您可以在SQLite 3.5.9及更高版本中使用它。

SQLite现在提供源All amalgamated 到一个文件中,这提高了性能,并使SQLite的编译和链接变得更加容易。构建说明已更新。

SQLITE_COPY 授权者代码和 SQLITE_PROTOCOL SQLite不再使用错误代码,但是为了向后兼容,这些值保留在apsw中

SQLITE_IOERR_DELETESQLITE_IOERR_BLOCKEDSQLITE_IOERR_NOMEM

Connection.interrupt() 可以从任何线程调用

SQLite对未检查的字符串和BLOB长度(粗略地限制为适合带符号的32位整数-小于2 GB)有实现限制。使用64位的Python2.5+(就像我所做的那样),可能会破坏内存并使程序崩溃。因此,APSW有长度检查,以确保不会发生这种情况。SQLite现在有了更多 limits checking 其中还包括其他内容,如最大虚拟机操作码数量、最大变量数量等。如果您从其他地方接收SQL语句,这些内容将非常有用。打电话 Connection.limit()

为虚拟表添加了重命名方法。

SQLite 3.5取消了连接上的所有操作都在同一线程中完成的要求。因此,所有执行该限制的代码都已从APSW中删除。

你再也不用打电话了 Connection.close() 。这在以前是确保使用正确线程的要求(否则析构函数会在任何线程中运行)。然而,这样做仍然是一个好主意,因为您可以在调用Close时捕获异常,但如果让析构函数进行关闭则不会。

SQLite现在具有增量 blob I/O

APSW issue 4 可能导致一般错误消息的问题已在SQLite 3.5.9中修复。

固定 APSW issue 1 在Windows上导致文件名错误的虚拟表示例代码中存在错误。

固定 APSW issue 15 围绕对sqlite3_preparate的调用释放GIL。

固定 APSW issue 7 确保扩展模块文件名转换为UTF8。

使用 sqlite3_open_v2 允许指定要使用的VFS的接口。此版本不允许您编写自己的VFS,因为SQLite VFS接口将针对SQLite 3.6进行更改。

使用了新的SQLite函数,这些函数跟踪虚表和归类何时不再使用,以便可以释放它们。以前,APSW还必须跟踪重复工作。

测试覆盖率提高了几个百分点。

现在,语句缓存的默认条目数与pysqlite相同(100)。但是,您可以根据需要指定或多或少。

Connection.collationneeded() 已经实施了。

3.3.13-r1

从本版本开始,APSW现在与pysqlite共同托管,这意味着只需访问一个站点即可进行Python SQLite绑定。(这两个项目后来都转移到了谷歌代码上。)

您可以在SQLite 3.3.13及更高版本中使用它。SQLite 3.3.10至3.3.13中没有API更改,尽管一些内部错误已修复,并且推荐使用3.3.13版本。

感谢埃德·帕斯马强调了以下问题:

  • Connection.interrupt() 可以从任何线程安全地调用。

  • 空语句或完全由空格组成的语句不会导致误用错误(在内部,SQLite START为这些语句返回空指针,并且 sqlite3_step 不喜欢被传递空指针)。

  • 更改了对 SQLITE_BUSY 错误与其他错误相同。以前的特殊处理允许您在收到BUSY时重新启动,但也可以挂起可能导致其他语句出现BUSY错误的语句。

3.3.10-r1

您可以在SQLite 3.3.10及更高版本中使用它。

添加了语句缓存,该语句缓存与 sqlite3_prepare_v2 原料药。SQLite中暴露了一些问题,因此您必须使用SQLite 3.3.10或更高版本。

3.3.9-r1

您可以在SQLite 3.3.9及更高版本中使用它。

添加了SQLite sqlite3_prepare_v2 原料药。此API更新的最终结果是您将不再获得SQLITE_SCHEMA。SQLite将在内部处理它。

3.3.8-r1

您可以将其用于SQLite 3.3.8及更高版本。SQLite 3.3.8中对虚表的API更改不兼容。

针对新API更新了虚拟表。

你必须打电话给我 close() 在关系上。您也可以拨打 close() 在游标上,但通常不是必需的。

所有字符串都以Unicode形式返回。

PyErr_WriteUnraisable 用于析构函数中的错误。不幸的是,它几乎完全没有用,仅仅是打印 str 对象和异常的关系。这无助于查找代码中出现问题的位置,以便您可以修复它。内部APSW实现生成回溯并调用 sys.excepthook() 它的默认实现将异常和回溯打印到sys.stderr。

备注

回溯中报告的行号通常为1。这是因为析构函数在代码行之间运行,因此下面一行被报告为当前位置。

授权码 SQLITE_CREATE_VTABLESQLITE_DROP_VTABLESQLITE_FUNCTION 添加了。

SQLite extended result codes 均可用-请参阅 例外情况和错误 了解更多详细信息。

apsw.connection_hooks 添加后,您可以在创建每个连接时轻松地注册函数、虚拟表格或类似的项目。

增列 mapping dicts 这使得在字符串和整型之间映射各种常量变得很容易。

3.3.7-r1

随着3.3.8的问世,它从未发布过。

您可以将此版本用于SQLite 3.3.7。SQLite 3.3.6API与3.3.5相比没有变化。在SQLite 3.3.7中,添加了一个允许删除重复代码块的API。还添加了以下内容 Virtual Tables 以及加载外部模块(共享库)。

APSW有以下更改:

  • 添加更多测试用例(测试越多越好:-)

  • 当异常发生时,虚拟帧被添加到C代码中的回溯。这使得在遇到异常时更容易判断代码被调用的原因。看见 augmented stack traces 了解更多细节。

  • 如果字符串值(传统和Unicode)包含嵌入的空字符(即不在空值处截断),则它们可以正常工作。

  • 您可以加载SQLite共享库扩展。

3.3.5-r1

从3.3.5开始,您可以将此版本用于SQLite 3的任何版本。如果在步骤函数中也存在错误,则在清理聚合函数期间报告错误时,也修复了错误。 (PyErr_WriteUnraisable(NULL) _在某些版本的Python上崩溃,但在其他版本上不崩溃。)

SQLite添加了几个函数,用于返回有关结果列集的元数据。必须使用以下命令编译SQLite SQLITE_ENABLE_COLUMN_METADATA 才能得到他们。这不是SQLite的默认设置。我不认为这些通常是有用的,除非在一些角落的情况下,所以他们没有包装。然而,如果你真的需要他们,请大声喊出来。请注意 Cursor.getdescription() 已经为您提供了一般有用的信息。(另请参阅 pragmas )

测试代码已转换为使用unittest模块。跑 python tests.py -v 才能进行测试。不应该有任何错误。

更新了代码,以正确使用新的 Py_ssize_t 在Python2.5中引入。有关Python和SQLite如何处理64位大小的项目的更多详细信息,请参阅64位主机,Python2.5+。

以下函数已添加到SQLite中并被包装。它们都是在 Connection 对象或 apsw 模块:

3.2.7-r1

您可以将此版本用于任何版本的SQLite 3。

SQLite 3.2.7有几个错误修复。未公开的实验功能 sqlite3_profile 已添加,但尚未出现在apsw中。

自从APSW最初被编写以来,PYSQLite的作者已经对其进行了相当大的改进。差异部分已经更新,以反映在pysqlite中的这些改进。

SQLITE_INTERNALSQLITE_NOTFOUND 根据3.2.7头文件,不使用错误代码。为了向后兼容,它们仍然存在于APSW中。

已更改构建说明,以便在非Windows平台上运行配置。

修复了一个错误,该错误消息试图告诉您您提供了多少绑定,但如果您没有提供任何绑定,则会崩溃,该错误消息非常有用。

由于SQLite中的限制而报告聚合的STEP函数中的错误时更改。

3.2.2-r1

您可以将此版本用于任何版本的SQLite 3。

已删除SQLite 3.2.2 API sqlite3_global_recover 。该函数没有包含在APSW中。请注意,SQLite 3.2.2包含当您使用64位整数主键(32位整数就可以)时适用的错误修复。

3.2.1-r1

您可以将此版本用于任何版本的SQLite 3。

除了更正示例代码中的错误之外,APSW中没有任何更改(根据连接而不是游标注册排序规则)

SQLite 3.2.1在稳定的C API中增加了一个新函数,名为 sqlite3_global_recover 。该函数不适用于APSW中的包装。

3.1.3-r1

您可以将此版本用于任何版本的SQLite 3。

由apsw.Error返回的文本字符串原来为“apsw.APSWException”,现已更改为“apsw.Error”。这纯粹是表面文章,有助于清楚地说明这门课是什么。(旧字符串是代码早期版本中的原始类名。)

增列 SQLITE_ALTER_TABLESQLITE_REINDEX 授权器函数的常量。(这些常量是在SQLite 3.1.3中引入的)。

将各种C++-ISM改为标准C(例如//注释和一些 CHECK_THREAD 宏调用)。

增加了模块级功能 apswversion() 它返回APSW的版本。

除了上面提到的以外,SQLite 3.1.3在稳定的C API中没有任何变化。添加了一些新的实验性函数,这些函数目前没有记录在SQLite网站上,也没有由APSW包装。如果您认为它们将保留在SQLite中,并希望将它们打包,请与我联系:

  • sqlite3_sleep 可以提供休眠指定毫秒数的替代功能。默认情况下,SQLite只使用标准操作系统调用。

  • sqlite3_expired 此函数是语句执行的内部函数。它将适用于实施 Cursor.executemany() 从理论上讲,它可以在性能上提供些许改善。

  • 一个全局变量 sqlite3_temp_directory 可在打开任何数据库之前使用,以设置创建临时文件的位置。默认情况下,SQLite只使用标准的操作系统机制。

3.0.8-r3

没有功能上的变化。唯一的更改是更正了示例代码中的一些变量名(它们是从使用不同名称的测试代码中剪切和粘贴的),并使源压缩文件将其内容解压缩到子目录中,这是打包此类内容的更典型方式。

3.0.8-r2

用于SQLite 3.0.8的C API中的所有剩余功能现在都可用。

已完成此文档。

3.0.8-r1

初始版本