oslo_db 包¶
子包¶
- oslo_db.sqlalchemy 包
- 子包
- 子模块
- oslo_db.sqlalchemy.asyncio_facade 模块
- oslo_db.sqlalchemy.enginefacade 模块
- oslo_db.sqlalchemy.engines 模块
- oslo_db.sqlalchemy.exc_filters 模块
- oslo_db.sqlalchemy.models 模块
- oslo_db.sqlalchemy.orm 模块
- oslo_db.sqlalchemy.provision 模块
后端BackendImplBackendImpl.all_impls()BackendImpl.create_named_database()BackendImpl.create_opportunistic_driver_url()BackendImpl.default_engine_kwargsBackendImpl.dispose()BackendImpl.drop_additional_objects()BackendImpl.drop_all_objects()BackendImpl.drop_named_database()BackendImpl.implBackendImpl.provisioned_database_url()BackendImpl.supports_drop_fk
BackendResourceDatabaseResourceProvisionedDatabaseSchemaSchemaResource
- oslo_db.sqlalchemy.session 模块
- oslo_db.sqlalchemy.test_base 模块
- oslo_db.sqlalchemy.test_fixtures 模块
AdHocDbFixtureBaseDbFixtureDeletesFromSchemaGeneratesSchemaGeneratesSchemaFromMigrationsMySQLOpportunisticFixtureOpportunisticDBTestMixinOpportunisticDbFixturePostgresqlOpportunisticFixtureReplaceEngineFacadeFixtureResetsDataSimpleDbFixtureoptimize_module_test_loader()optimize_package_test_loader()
- oslo_db.sqlalchemy.test_migrations 模块
ModelsMigrationsSyncModelsMigrationsSync.compare_server_default()ModelsMigrationsSync.compare_type()ModelsMigrationsSync.db_sync()ModelsMigrationsSync.filter_metadata_diff()ModelsMigrationsSync.get_engine()ModelsMigrationsSync.get_metadata()ModelsMigrationsSync.include_object()ModelsMigrationsSync.test_models_sync()
- oslo_db.sqlalchemy.types 模块
- oslo_db.sqlalchemy.update_match 模块
- oslo_db.sqlalchemy.utils 模块
DialectFunctionDispatcherDialectMultiFunctionDispatcherDialectSingleFunctionDispatcheradd_index()change_index_columns()column_exists()dispatch_for_dialect()drop_index()drop_old_duplicate_entries_from_table()get_db_connection_info()get_foreign_key_constraint_name()get_indexes()get_non_innodb_tables()get_table()get_unique_keys()index_exists()index_exists_on_columns()make_url()model_query()paginate_query()sanitize_db_url()to_list()
- 模块内容
子模块¶
oslo_db.api 模块¶
多数据库 API 后端支持。¶
数据库后端模块应实现名为 'get_backend' 的方法,该方法不接受任何参数。该方法可以返回实现 DB API 方法的任何对象。
- class oslo_db.api.DBAPI(backend_name, backend_mapping=None, lazy=False, **kwargs)¶
基类:
object初始化选定的数据库 API 后端。
初始化后,API 方法可作为
DBAPI子类的普通属性使用。数据库 API 方法应作为 DBAPI 实例方法调用。- 参数:
backend_name (str) – 要加载的后端名称
backend_mapping (dict) – 后端名称 -> 要加载的模块/类映射
lazy (bool) – 在首次调用 DB API 方法时延迟加载 DB 后端
use_db_reconnect (bool) – 是否在断开连接时重试 DB 事务
retry_interval (int) – 重试事务之间的秒数
inc_retry_interval (bool) – 是否增加重试间隔
max_retry_interval (int) – 重试之间的最大间隔值
max_retries (int) – 引发错误之前的最大重试次数
- 默认 backend_mapping:
无
- 默认 lazy:
False
- classmethod from_config(conf, backend_mapping=None, lazy=False)¶
给定配置实例初始化 DBAPI 实例。
- 参数:
conf (oslo.config.cfg.ConfigOpts) – oslo.config 配置实例
backend_mapping (dict) – 后端名称 -> 要加载的模块/类映射
lazy (bool) – 在首次调用 DB API 方法时延迟加载 DB 后端
- oslo_db.api.retry_on_deadlock(f)¶
如果收到 Deadlock,则重试 DB API 调用。
wrap_db_entry 将应用于用此装饰器标记的所有 db.api 函数。
- oslo_db.api.retry_on_request(f)¶
如果收到 RetryRequest 异常,则重试 DB API 调用。
wrap_db_entry 将应用于用此装饰器标记的所有 db.api 函数。
- oslo_db.api.safe_for_db_retry(f)¶
指示 API 方法对于重新连接到数据库是安全的。
将为装饰的 API 方法启用数据库连接重试。数据库连接失败的原因可能有很多,其中一些可能是暂时的。在这种情况下,重试可能会增加连接的可能性。
用法
@safe_for_db_retry def api_method(self): self.engine.connect()
- 参数:
f (function.) – 数据库 API 方法。
- class oslo_db.api.wrap_db_retry(retry_interval=1, max_retries=20, inc_retry_interval=True, max_retry_interval=10, retry_on_disconnect=False, retry_on_deadlock=False, exception_checker=<function wrap_db_retry.<lambda>>, jitter=False)¶
基类:
object如果引发 db_error,则重试 db.api 方法
重试装饰的 db.api 方法。此装饰器捕获 db_error 并循环重试函数,直到成功,或直到达到最大重试次数。
关键字参数
- 参数:
retry_interval (int or float) – 重试事务之间的秒数
max_retries (int) – 引发错误之前的最大重试次数
inc_retry_interval (bool) – 确定是否增加重试间隔
max_retry_interval (int or float) – 重试之间的最大间隔值
exception_checker (callable) – 检查是否应引发异常以触发重试
jitter (bool) – 确定是否增加重试间隔使用抖动,对于 DBDeadlockError,抖动始终解释为 True
oslo_db.exception 模块¶
数据库相关的自定义异常。
旨在确定特定数据库错误原因的自定义异常。此模块提供比特定数据库驱动程序库更通用的异常,因此 oslo.db 的用户可以捕获这些异常,而不管应用程序使用的是哪种数据库。大多数异常都是包装器。包装器异常将原始异常作为位置参数,并保留它以供进一步调试。这对于在执行过程中进一步确定更具体的错误情况很有用,当您需要为错误消息添加一些额外信息时。包装器异常会处理原始错误消息的显示,以避免丢失错误的底层原因。所有数据库 API 异常都包装在下面提供的特定异常中。请仅在数据库操作中使用数据库相关的自定义异常与 try/except 语句。这对于一致处理数据库错误是必需的。
示例
try:
statement(arg)
except sqlalchemy.exc.OperationalError as e:
raise DBDuplicateEntry(e)
oslo_db.exception 模块¶
数据库相关的自定义异常。
- exception oslo_db.exception.BackendNotAvailable¶
基础:
Exception当特定数据库后端不可用时引发的错误
在测试套件中。
- exception oslo_db.exception.CantStartEngineError¶
基础:
Exception当 enginefacade 无法正确启动时引发的错误。
- exception oslo_db.exception.ColumnError¶
基础:
Exception当未找到列或无效列时引发的错误。
- exception oslo_db.exception.ContextNotRequestedError¶
Bases:
AttributeError当请求未设置的 enginefacade 属性时引发的错误。
这适用于用户定义的上下文和/或 RequestContext 对象的
session和connection属性,当它们在 enginefacade 装饰器或上下文管理器范围*内*访问时,但上下文尚未请求该属性(例如,像“with enginefacade.connection.using(context)”而请求了“context.session”).
- exception oslo_db.exception.DBConnectionError(inner_exception=None, cause=None)¶
Bases:
DBError包装的连接特定异常。
当数据库连接失败时引发。
- exception oslo_db.exception.DBConsistencyError(inner_exception=None, cause=None)¶
Bases:
DBDeadlock数据库一致性错误。
当数据库操作由于一致性要求而失败时引发,例如当 MariaDB 检测到在 REPEATABLE-READ 隔离级别下的当前事务中,某行自上次读取以来已被更改。这是 DBDeadlock 的子类,因为它代表了可以通过重试事务来解决的同一种瞬态并发问题。
- exception oslo_db.exception.DBConstraintError(table, check_name, inner_exception=None)¶
Bases:
DBError列错误检查约束失败。
当尝试写入不满足 CHECK 约束的值到列时引发。
- 参数:
table (str) – 检查失败的表名
check_name (str) – 未能满足的检查的表名
- exception oslo_db.exception.DBDataError(inner_exception=None, cause=None)¶
Bases:
DBError由于处理数据的问题而引发的错误。
例如除零、数值超出范围、数据类型错误等
- exception oslo_db.exception.DBDeadlock(inner_exception=None, cause=None)¶
Bases:
DBError数据库死锁错误。
当数据库操作因并发访问冲突而失败时引发,包括传统的死锁(两个或多个数据库会话持有冲突的锁)以及其他瞬态并发问题(如一致性验证失败)。这些情况通常可以通过重试事务来解决。
- exception oslo_db.exception.DBDuplicateEntry(columns=None, inner_exception=None, value=None)¶
Bases:
DBError在唯一列中重复条目错误。
当尝试向唯一列写入与现有条目相同的条目时引发。:attr: columns 在异常实例上可用,可用于错误处理
try: instance_type_ref.save() except DBDuplicateEntry as e: if 'colname' in e.columns: # Handle error.
- 参数:
columns (list) – 尝试写入重复条目的唯一列列表。
value – 尝试写入的值。如果我们无法为特定的数据库后端提取该值,则该值为 None。目前仅支持 MySQL 和 PostgreSQL 9.x。
- exception oslo_db.exception.DBError(inner_exception=None, cause=None)¶
Bases:
CausedByException所有自定义数据库异常的基类。
- 参数:
inner_exception – 被 DBError 或其子类包装的原始异常。
- exception oslo_db.exception.DBInvalidUnicodeParameter¶
基础:
Exception数据库 Unicode 错误。
当 unicode 参数在未指定编码指令的情况下传递给数据库时引发。
- exception oslo_db.exception.DBMigrationError(inner_exception=None, cause=None)¶
Bases:
DBError包装的迁移特定异常。
当迁移未能成功完成时引发。
- exception oslo_db.exception.DBNonExistentConstraint(table, constraint, inner_exception=None)¶
Bases:
DBError约束不存在。
- 参数:
table (str) – 表名
constraint – 约束名称
- exception oslo_db.exception.DBNonExistentDatabase(database, inner_exception=None)¶
Bases:
DBError数据库不存在。
- 参数:
database (str) – 数据库名称
- exception oslo_db.exception.DBNonExistentTable(table, inner_exception=None)¶
Bases:
DBError表不存在。
- 参数:
table (str) – 表名
- exception oslo_db.exception.DBNotSupportedError(inner_exception=None, cause=None)¶
Bases:
DBError当数据库后端引发 sqla.exc.NotSupportedError 时引发
- exception oslo_db.exception.DBReferenceError(table, constraint, key, key_table, inner_exception=None)¶
Bases:
DBError外键违反错误。
- 参数:
table (str) – 引用的表名。
constraint (str) – 有问题的约束名称。
key (str) – 损坏的引用键名。
key_table (str) – 包含键的表名。
- exception oslo_db.exception.InvalidSortKey(key=None)¶
基础:
Exception用于数据库查询的排序键无效。
- exception oslo_db.exception.NoEngineContextEstablished¶
Bases:
AttributeError当没有上下文的情况下访问 enginefacade 属性时引发的错误。
这适用于用户定义的上下文和/或 RequestContext 对象的
session和connection属性,当它们在 enginefacade 装饰器或上下文管理器范围*外*访问时。该异常是 AttributeError 的子类,因此可以保持正常的 Python 缺失属性行为,例如支持
getattr(context, 'session', None)。
- exception oslo_db.exception.RetryRequest(inner_exc)¶
基础:
Exception当 DB 操作需要重试时引发的错误。
这可能是由代码有意引发的,没有实际的 DB 错误。
oslo_db.options 模块¶
- oslo_db.options.list_opts()¶
返回库中可用的 oslo.config 选项列表。
返回的列表包含库在运行时可能注册的所有 oslo.config 选项。
列表中的每个元素都是一个元组。第一个元素是将在其中注册第二个元素中列表的组的名称。组名称为 None 对应于配置文件中的 [DEFAULT] 组。
其目的是允许 Oslo 示例配置文件生成器等工具发现此库向用户公开的选项。
- 返回值:
一个 (group_name, opts) 元组列表
- oslo_db.options.set_defaults(conf, connection=None, max_pool_size=None, max_overflow=None, pool_timeout=None)¶
设置配置变量的默认值。
覆盖默认选项值。
- 参数:
conf (oslo.config.cfg.ConfigOpts 实例。) – 指定用于在其设置默认选项的 Config 实例。使用实例而不是全局配置对象可以防止选项声明之间的冲突。
connection (str) – SQL 连接字符串。有效的 SQLite URL 形式为: * sqlite:///:memory: (或,sqlite://) * sqlite:///relative/path/to/file.db * sqlite:////absolute/path/to/file.db
max_pool_size (int) – 最大连接池大小。要维护的池的大小,默认为 5。这是将要持久保留在池中的最大连接数。请注意,池最初没有连接;一旦请求了此数量的连接,该数量的连接将保留。
max_overflow (int) – 池的最大溢出大小。当签出的连接数达到 pool_size 中设置的大小后,将返回额外的连接,直到此限制。当这些额外连接返回到池时,它们将被断开连接并丢弃。因此,池将允许的同时连接总数是 pool_size + max_overflow,池将允许的“睡眠”连接总数是 pool_size。max_overflow 可以设置为 -1 以表示没有溢出限制;对并发连接总数没有限制。默认为 10,如果参数值是 None,则使用它。
pool_timeout (int) – 在放弃返回连接之前等待的秒数。默认为 30,如果参数值是 None,则使用它。
- 默认 max_pool_size:
5
- 默认 max_overflow:
无
- 默认 pool_timeout:
无
oslo_db.warning 模块¶
自定义警告。
- exception oslo_db.warning.NotSupportedWarning¶
Bases:
Warning警告已传递的参数或调用不受支持。
它继承自 Warning,以便可以将其作为独立类别进行过滤。
- exception oslo_db.warning.OsloDBDeprecationWarning¶
Bases:
DeprecationWarning为已弃用 API 的使用而发出。
它继承自 DeprecationWarning,以便可以将其作为独立类别进行过滤。