在 Microsoft SQL Server 和 Python 的 SQLAlchemy 和 pyodbc 的上下文中,啥是“用户事务”?
Posted
技术标签:
【中文标题】在 Microsoft SQL Server 和 Python 的 SQLAlchemy 和 pyodbc 的上下文中,啥是“用户事务”?【英文标题】:What is a "User Transaction" in the context of Microsoft SQL Server and Python's SQLAlchemy and pyodbc?在 Microsoft SQL Server 和 Python 的 SQLAlchemy 和 pyodbc 的上下文中,什么是“用户事务”? 【发布时间】:2021-12-28 08:46:17 【问题描述】:现在我在这里做一些奇怪的事情...我想将 pandas 数据帧中的数据提取到 Microsoft SQL Server 2019 上的内存中 OLTP 数据库中。该表尚不存在,我想即时创建它基于 pandas 数据框。
为此,我修改了 pandas 在通常插入数据之前生成的 SQL create 语句,以便我实际上将表创建为内存表。直接在 Microsoft SQL Server Management Studio 中使用时,create 语句可以正常工作。
但是,当我使用 SQLAlchemy 从我的 Python 脚本中运行 create 语句时,我收到以下错误消息:
DDL statements ALTER, DROP and CREATE inside user transactions are not supported with memory optimized tables.
这是什么意思?什么是用户交易?我可以尝试什么来完成这项工作?
谢谢
【问题讨论】:
很难判断,除非我们看到使用的查询。几个月前这对我有用,我不在sql旁边检查conn = create_engine('mssql+pyodbc://Server_Name/Database_name?driver=SQL+Server+Native+Client+11.0') conn.execute(''' CREATE TABLE customer_table ( CustomerKey INTEGER PRIMARY KEY NOT NULL, LastName VARCHAR(250), BirthDate DATE, ActiveStatus CHAR(3) ); ''')
你能分享你正在使用的代码吗
我刚刚发现原因是什么......将发布答案。感谢您花时间考虑这个问题
【参考方案1】:
我发现原因是自动提交标志默认设置为 False。将其设置为 True 后,一切正常
【讨论】:
以上是关于在 Microsoft SQL Server 和 Python 的 SQLAlchemy 和 pyodbc 的上下文中,啥是“用户事务”?的主要内容,如果未能解决你的问题,请参考以下文章
Microsoft SQL Server 2008 和Microsof Server 2008 有啥区别.?
Microsoft SQL Server Management Studio 已超过了锁请求超时时段。 (Microsoft SQL Server,错误: 1222)
C# - MySQL 与 Microsoft SQL Server [关闭]