Support for the Firebird database.
The following dialect/DBAPI options are available. Please refer to individual DBAPI sections for connect information.
Firebird提供两种不同的 dialects (不要与一个SQLAlchemy混淆 Dialect
):
这是从Interbase 6.0之前版本继承的旧语法和行为。
这是Interbase 6.0中引入的更新且受支持的语法。
SQLAlchemy Firebird方言检测这些版本并相应地调整其对SQL的表示。然而,对方言1的支持还没有经过很好的测试,可能有不兼容之处。
火鸟猛烈地锁住表格。因此,在释放其他事务之前,删除表可能会挂起。SQLAlchemy尽其所能尽快发布事务。挂起事务的最常见原因是非完全消耗的结果集,即:
result = engine.execute("select * from table")
row = result.fetchone()
return
在上面的地方, ResultProxy
尚未完全消耗。一旦python垃圾收集器回收保留连接的对象,连接将返回池,事务状态将回滚,而这些对象通常是异步发生的。上述用例可以通过调用 first()
上 ResultProxy
它将获取第一行并立即关闭所有剩余的光标/连接资源。
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: http://pypi.python.org/pypi/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将禁用对kinterbasdb方言使用“cursor.rowcount”,而sqlAlchemy通常在任何update或delete语句之后自动调用该方言。禁用后,sqlAlchemy的resultProxy将为result.rowCount返回-1。这里的基本原理是,当调用.rowcount时,kinterbasdb需要第二次访问数据库-由于sqla的resultproxy在非结果返回语句后自动关闭光标,因此必须在返回结果对象之前调用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
.
参见
http://pythonhosted.org/fdb/usage guide.html保留事务-有关“保留”标志的信息。
Support for the Firebird database via the kinterbasdb driver.
Documentation and download information (if applicable) for kinterbasdb is available at: http://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。有关详细信息,请参阅下面的链接文档。
参见
http://sourceforge.net/projects/kinterbasdb
http://kinterbasdb.sourceforge.net/dist_docs/usage.html adv_param_conv_dynamic_type_翻译
http://kinterbasdb.sourceforge.net/dist_docs/usage.html特殊问题并发