Support for the Firebird database.
The following table summarizes current support levels for database release versions.
The following dialect/DBAPI options are available. Please refer to individual DBAPI sections for connect information.
注解
在炼金术中的火鸟方言 当前不支持 . 它没有在持续集成中进行测试,并且可能有许多问题和警告目前尚未处理。考虑使用 external dialect 相反。
1.4 版后已移除: 内部Firebird方言已弃用,将在将来的版本中删除。使用外部方言。
Firebird提供两种不同的 dialects (不要与一个SQL炼金术混淆 Dialect ):
这是从Interbase 6.0之前版本继承的旧语法和行为。
这是Interbase 6.0中引入的更新且受支持的语法。
SQLAlchemy Firebird方言检测这些版本并相应地调整其对SQL的表示。然而,对方言1的支持还没有经过很好的测试,可能有不兼容之处。
火鸟猛烈地锁住桌子。因此,在释放其他事务之前,删除表可能会挂起。SQLAlchemy尽其所能尽快发布事务。挂起事务的最常见原因是非完全消耗的结果集,即:
result = engine.execute(text("select * from table"))
row = result.fetchone()
return在上面的地方, CursorResult 尚未完全消耗。一旦python垃圾收集器回收保留连接的对象,连接将返回池,事务状态将回滚,而这些对象通常是异步发生的。上述用例可以通过调用 first() 上 CursorResult 它将获取第一行并立即关闭所有剩余的光标/连接资源。
Firebird 2.0支持从插入返回结果集,2.1将其扩展到删除和更新。这通常由sqlAlchemy公开 returning() 方法,例如:
# INSERT..RETURNING
result = table.insert().returning(table.c.col1, table.c.col2).\
values(name='foo')
print(result.fetchall())
# UPDATE..RETURNING
raises = empl.update().returning(empl.c.id, empl.c.salary).\
where(empl.c.sales>100).\
values(dict(salary=empl.c.salary * 1.1))
print(raises.fetchall())Support for the Firebird database via the fdb driver.
FDB是一种与Kinterbasdb兼容的火鸟DBAPI。
在 0.9 版更改: -FDB方言现在是 firebird:// URL空间 fdb 现在是火鸟的官方python驱动程序。
Documentation and download information (if applicable) for fdb is available at: https://pypi.org/project/fdb/
Connect String:
firebird+fdb://user:password@host:port/path/to/db[?key=value&key=value...]这个 fdb 方言是基于 sqlalchemy.dialects.firebird.kinterbasdb 然而,方言并不能接受Kinterbasdb所做的每一个论证。
enable_rowcount -默认情况下为True,将其设置为False将禁用行计数.cursor“使用Kinterbasdb方言,SQLAlchemy通常在任何UPDATE或DELETE语句后自动调用它。禁用时,SQLAlchemy的CursorResult将为返回-1result.rowcount. 这里的基本原理是,当调用.rowcount时,Kinterbasdb需要对数据库进行第二次往返-由于SQLA的resultproxy在非结果返回语句之后自动关闭游标,因此必须在返回result对象之前调用rowcount(如果有的话)。另外,cursor.rowcount对于旧版本的Firebird可能无法返回正确的结果,并且将此标志设置为False也会导致SQLAlchemy ORM忽略其用法。也可以在每次执行的基础上使用 enable_rowcount 选项与 Connection.execution_options() ::
conn = engine.connect().execution_options(enable_rowcount=True)
r = conn.execute(stmt)
print(r.rowcount)retaining -默认为false。将此设置为true将通过 retaining=True 关键字参数 .commit() 和 .rollback() DBAPI连接的方法,在某些情况下可以提高性能,但明显需要注意。请阅读FDB和/或KinterbasDB DBAPI文档,以了解此标志的含义。
在 0.9.0 版更改: - the retaining flag defaults to False.
In 0.8 it defaulted to True.
Support for the Firebird database via the kinterbasdb driver.
Documentation and download information (if applicable) for kinterbasdb is available at: https://firebirdsql.org/index.php?op=devel&sub=python
Connect String:
firebird+kinterbasdb://user:password@host:port/path/to/db[?key=value&key=value...]kinterbasdb后端接受 enable_rowcount 和 retaining 被接受的参数 sqlalchemy.dialects.firebird.fdb 方言。此外,它还接受以下内容:
type_conv -选择在类型上完成的映射类型:默认情况下,SQLAlchemy使用具有Unicode、日期时间和十进制支持的200。有关详细信息,请参阅下面的链接文档。
concurrency_level -针对线程问题设置后端策略:默认情况下,SQLAlchemy使用策略1。有关详细信息,请参阅下面的链接文档。
flambé! the dragon and The Alchemist image designs created and generously donated by Rotem Yaari.
Created using Sphinx 4.2.0.