首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

SqlAlchemy 2.0 中文文档(四十五)

该实现是方言特定的,并且利用特定于 DBAPI 的 ping 方法,或者使用简单的 SQL 语句如“SELECT 1”,以便测试连接的活动性。...("mysql+pymysql://user:pw@host/db", pool_pre_ping=True) “预 ping”功能根据每个方言的基础,通过调用特定于 DBAPI 的“ping”方法,或者如果不可用...池预 ping 功能时捕获的错误,用于依赖于断开错误处理的后端(在 2.0 中新增)。...该实现是方言特定的,可以使用特定于 DBAPI 的 ping 方法,也可以使用简单的 SQL 语句如“SELECT 1”来测试连接的活动性。...= create_engine("mysql+pymysql://user:pw@host/db", pool_pre_ping=True) “预连接”功能是在每个方言基础上运行的,通过调用特定于 DBAPI

37810

SqlAlchemy 2.0 中文文档(五十三)

在使用 Engine 时,如何获取原始的 DBAPI 连接? 如何在 Python 多进程或 os.fork() 中使用引擎 / 连接 / 会话?...SQLAlchemy 在大多数情况下会自动执行应用程序级别的连接池。对于所有包含的方言(除了使用“内存”数据库的 SQLite),Engine 对象指的是一个 QueuePool 作为连接的来源。...因此,SQLAlchemy 没有一个能在事务进行中工作时透明地进行“重新连接”的功能,以处理数据库连接在使用过程中断开的情况。...value % two" FROM my_table 另一种方法是在使用的方言上设置不同的参数样式;所有 Dialect 实现都接受一个参数 paramstyle,将导致该方言的编译器使用给定的参数样式...下面,非常常见的named参数样式在用于编译的方言中设置,以便百分号在 SQL 的编译形式中不再重要,并且不再被转义: >>> print(t.select().compile(dialect=postgresql.dialect

21010
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    SqlAlchemy 2.0 中文文档(五十八)

    方言特性已重新设计,使得所有方言都参与事件处理。另外,添加了一个新的布尔元素 ExceptionContext.is_pre_ping,用于标识此操作是否在预 ping 操作中进行。...“预 ping”事件,对于那些使用断开代码来检测数据库是否存活的方言。...这使得最终用户代码能够更改“预 ping”的状态。请注意,这不包括包含本地“ping”方法的方言,如 psycopg2 或大多数 MySQL 方言。...该参数最初旨在在 SQLAlchemy 首次开发时启用“implicit returning”功能,但默认情况下未启用。...现在,所有 PostgreSQL 方言都使用 PostgreSQL 双冒号样式在编译器内呈现这些转换所需的转换,并且对于 PostgreSQL 方言,已删除了使用setinputsizes(),因为这在任何情况

    16710

    SqlAlchemy 2.0 中文文档(四十三)

    这里的最终用户功能扩展通常应通过TypeDecorator完成,它提供更自由的行为,因为它默认将表达式的另一侧强制转换为此类型,从而应用特殊的 Python 转换,超出了 DBAPI 所需的范围。...另请参见 配置日志记录 - 关于如何配置日志记录的更多细节。 pool_pre_ping – 布尔值,如果为 True,则启用连接池的“预检”功能,即在每次检出时测试连接的活动性。...设置每个连接/子引擎令牌 1.4.0b2 版本中的新功能。...另请参阅 配置日志记录 - 关于如何配置日志记录的更多详细信息。 pool_pre_ping – 如果为 True,则启用连接池“预检”功能,该功能在每次检出时测试连接的活动性。...使用 LIFO,服务器端的超时方案可以在非高峰使用期间减少使用的连接数。在规划服务器端超时时,请确保使用回收或预先 ping 策略以优雅地处理陈旧的连接。 版本 1.3 中的新功能。

    34510

    SqlAlchemy 2.0 中文文档(四十六)

    从 SQLAlchemy 2.0 开始,使用 create_engine.pool_pre_ping 参数启用的“pre_ping”处理程序也将参与 handle_error() 过程,对于那些依赖断开连接代码来检测数据库活动性的方言...请注意,一些方言,如 psycopg、psycopg2 和大多数 MySQL 方言,使用由 DBAPI 提供的本地 ping() 方法,该方法不使用断开连接代码。...此钩子支持的用例包括: 用于记录和调试目的的只读低级异常处理 确定 DBAPI 连接错误消息是否表明需要重新连接数据库,包括一些方言中使用的“pre_ping”处理程序 确定或禁用特定异常响应中连接或拥有的连接池是否无效或过期...自 SQLAlchemy 2.0 起,使用 create_engine.pool_pre_ping 参数启用的“pre_ping”处理程序也将参与 handle_error() 过程,对于依赖于断开连接代码来检测数据库存活性的那些方言...请注意,某些方言,如 psycopg、psycopg2 和大多数 MySQL 方言,使用由 DBAPI 提供的本机 ping() 方法,该方法不使用断开连接代码。

    30310

    SqlAlchemy 2.0 中文文档(八十)

    对于支持多个后端的 DBAPI(如 pyodbc、zxJDBC、mxODBC),方言模块将使用来自 sqlalchemy.connectors 包的混合物,这些混合物提供了跨所有后端的该 DBAPI 的功能...如果在不支持级联的数据库上,如 SQLite 或 MySQL/MyISAM 上,将此标志设置为False。未来的功能增强将尝试根据使用的方言/表格样式自动配置此标志。...在 PostgreSQL 上,观察到这可以在某些查询中提供 300-600%的加速。为任何在 NOT NULLable 外键上的多对一关系设置此标志,类似地,为任何保证存在相关项的集合设置此标志。...如果在不支持级联的数据库上,如 SQLite 或 MySQL/MyISAM,则将此标志设置为 False。将来的功能增强将尝试根据正在使用的方言/表样式来自动配置此标志。...如果在不支持级联的数据库上,如 SQLite 或 MySQL/MyISAM 上,将此标志设置为False。未来的功能增强将尝试根据使用的方言/表样式自动配置此标志。

    20410

    SqlAlchemy 2.0 中文文档(四十一)

    ,也要受到“条件”规则的约束,例如一个索引包含特定于特定后端(如 PostgreSQL 或 SQL Server)的功能。...SQLAlchemy ORM 要求映射的主键列必须以某种方式可排序。当使用不可排序的枚举对象,如 Python 3 的 Enum 对象时,可以使用此参数为对象设置默认的排序键函数。...SQLAlchemy ORM 要求映射的主键列必须以某种方式可排序。当使用不可排序的枚举对象,如 Python 3 的 Enum 对象时,可以使用此参数为对象设置默认排序键函数。...针对特定数据库方言的版本可能提供额外的操作,例如 JSON 的特定于数据库方言的版本,如 sqlalchemy.dialects.postgresql.JSON 和 sqlalchemy.dialects.postgresql.JSONB...TIMESTAMP数据类型在一些后端(如 PostgreSQL 和 Oracle)上支持时区存储。使用TIMESTAMP.timezone参数以启用这些后端的“带时区的 TIMESTAMP”。

    30810

    SqlAlchemy 2.0 中文文档(七十六)

    特别是,这些钩子在很大程度上无法使用,因为这些事件中的行为契约与周围内部紧密相关,例如实例如何需要被创建和初始化以及列如何在 ORM 生成的行中定位。...特别是,这些钩子在很大程度上无法使用,因为这些事件中的行为契约与周围内部的强烈联系,例如需要如何创建和初始化实例以及如何在 ORM 生成的行中定位列。...特别是,这些钩子在很大程度上无法使用,因为这些事件内部的行为约定与周围内部的密切联系,比如实例需要如何创建和初始化以及如何在 ORM 生成的行中定位列。...另请参阅 右嵌套内连接可用于连接式预加载 - 在 0.9.4 版本中引入的功能的描述。...为了处理实际希望在其可能值列表中包含空值''的集合类型的情况,实现了一个新特性(在此用例中需要),即集合值被持久化并作为位整数值加载;添加了标志SET.retrieve_as_bitwise以启用此功能

    10610

    SqlAlchemy 2.0 中文文档(五十五)

    在使用第三方方言时,请与方言的维护者协商,以便他们可以遵循 确保可以启用缓存的步骤 并发布新版本。...在使用第三方方言时,请咨询方言的维护人员,以便他们遵循确保可以启用缓存的步骤并发布新版本。...这个过程在内部是复杂的,并且不支持所有 API 功能,特别是当尝试在比这里展示的更深度嵌套查询中使用急加载功能时,如contains_eager()。...在使用第三方方言时,请与方言的维护者协商,以便他们遵循确保可以启用缓存的步骤并发布新版本。...使用第三方方言时,请咨询方言的维护者,以便他们可以按照确保可以启用缓存的步骤进行操作,并发布一个新的版本。

    44310

    SqlAlchemy 2.0 中文文档(五十七)

    虽然原始功能对于 psycopg2 驱动程序最为关键,否则在使用cursor.executemany()时会有严重的性能问题,但该变更对于其他 PostgreSQL 驱动程序如 asyncpg 同样关键...SQLAlchemy 在历史上一直需要为每个参数集调用一个语句,因为它依赖于 Python DBAPI 功能,如cursor.lastrowid,这些功能不支持多行。...SQLAlchemy 当前的集成方法将用户定义的类转换为真实数据类以提供运行时功能;该特性利用了 SQLAlchemy 1.4 中引入的现有数据类功能,在 Python 数据类,支持 attrs w/声明性...虽然原始功能对于 psycopg2 驱动程序至关重要,否则在使用 cursor.executemany() 时存在严重的性能问题,但对于其他 PostgreSQL 驱动程序,如 asyncpg,此更改也至关重要...;相反,使用 SQL 构造方法,如 WriteOnlyCollection.select() 来生成 SQL 构造,比如 Select,然后使用 2.0 风格 显式加载所需对象: account_transactions

    49610

    SqlAlchemy 2.0 中文文档(七十五)

    为了识别这种变化,当这些异常发生在连接执行工作过程中时,很容易展示一个 pymysql 或 mysqlclient / MySQL-Python 连接进入损坏状态;连接将被返回到连接池,随后的使用将失败...SQLAlchemy 一直具有为单列整数主键启用后端数据库的“自增”功能的便利特性;通过“自增”,我们指的是数据库列将包括数据库提供的任何 DDL 指令,以指示自增整数标识符,例如 PostgreSQL...如 ARRAY 和 JSON 类型现在正确指定“不可哈希” 中描述的那样,现在这个标志已经一致地设置在了所有 PostgreSQL 的“结构”类型上。...另请参见 没有方言的核心 SQL 结构的“友好”字符串化 #3081 在一行中多次出现相同实体的连接式预加载 已对通过连接式预加载加载属性的情况进行了修复,即使实体已经从不包括属性的不同“路径”上的行加载...SQLAlchemy 一直以来都有一个方便的特性,即为单列整数主键启用后端数据库的“自增”功能;所谓的“自增”,是指数据库列将包含任何 DDL 指令,以指示自增长整数标识符,例如在 PostgreSQL

    33110

    SqlAlchemy 2.0 中文文档(五十九)

    有关 1.4 中的新内容的叙述性概述,请参阅 SQLAlchemy 1.4 有什么新功能?。...[mysql] [错误] 修复了 MySQL“预先 ping”例程中的新不兼容性,其中传递给connection.ping()的False参数,旨在禁用不需要的“自动重新连接”功能,在 MySQL 驱动程序和后端中已弃用...参考:#8995 orm [orm] [bug] 修复了用于 DML 语句(如 Update 和 Delete)的内部 SQL 遍历中的问题,该问题可能会导致与 ORM 更新/删除功能一起使用...另请参阅 使用服务器端游标(即流式结果) - 修订文档 [engine] [bug] 修复了Result中的错误,当使用缓冲结果策略时,如果使用的方言不支持显式的“服务器端游标”设置,则不会使用...当上下文管理器完成时,这似乎有助于使用其他并发库(如 anyio、uvloop)时取消任务时正确释放连接池中的连接。

    21810

    SqlAlchemy 2.0 中文文档(五十)

    然而,SQLite 的自动增量功能,无论是隐式还是显式启用,都要求列类型的名称正好是字符串"INTEGER"。...该类基于方言无关的 Insert 结构,可以使用 SQLAlchemy Core 中的 insert() 函数构造。...在其默认操作模式下,SQLite 的功能,如可序列化隔离、事务 DDL 和 SAVEPOINT 支持是不起作用的,为了使用这些功能,必须采取解决方法。...在其默认操作模式下,SQLite 的功能,如 SERIALIZABLE 隔离、事务 DDL 和 SAVEPOINT 支持是不起作用的,为了使用这些功能,必须采取解决方法。...在其默认操作模式下,SQLite 功能(如 SERIALIZABLE 隔离、事务性 DDL 和 SAVEPOINT 支持)是不起作用的,为了使用这些功能,必须采取一些变通方法。

    38110

    SqlAlchemy 2.0 中文文档(二十三)

    ,但这大大限制了“多”关系的功能,通常不是所需的。...数据库不能在进行中的事务中更改隔离级别,而一些 DBAPIs 和 SQLAlchemy 方言在这方面的行为不一致。 因此,最好使用一个提前绑定到具有所需隔离级别的引擎的Session。...数据库不能更改正在进行的事务的隔离级别,并且一些 DBAPIs 和 SQLAlchemy 方言在这个领域的行为不一致。 因此,最好使用一个与所需隔离级别的引擎直接绑定的Session。...数据库无法更改正在进行的事务的隔离级别,并且一些 DBAPI 和 SQLAlchemy 方言在这个领域的行为不一致。 因此最好使用一个最初绑定到具有所需隔离级别的引擎的 Session。...数据库无法更改正在进行的事务的隔离级别,并且一些 DBAPI 和 SQLAlchemy 方言在这个领域的行为不一致。 因此,最好使用一个明确绑定到具有所需隔离级别的引擎的 Session。

    28710
    领券