SQLAlchemy 核心创建临时表为

2024-03-05

我正在尝试使用 PostgreSQLCREATE TEMPORARY TABLE foo AS SELECT...SQLAlchemy Core 中的查询。我已经浏览了文档,但没有找到执行此操作的方法。

我有一个 SQLA 语句对象。如何根据其结果创建临时表?


这就是我想出来的。请告诉我这是否是错误的方法。

from sqlalchemy.sql import Select
from sqlalchemy.ext.compiler import compiles


class CreateTableAs(Select):
    """Create a CREATE TABLE AS SELECT ... statement."""

    def __init__(self, columns, new_table_name, is_temporary=False,
            on_commit_delete_rows=False, on_commit_drop=False, *arg, **kw):
        """By default the table sticks around after the transaction. You can
        change this behavior using the `on_commit_delete_rows` or
        `on_commit_drop` arguments.

        :param on_commit_delete_rows: All rows in the temporary table will be
        deleted at the end of each transaction block.
        :param on_commit_drop: The temporary table will be dropped at the end
        of the transaction block.
        """
        super(CreateTableAs, self).__init__(columns, *arg, **kw)

        self.is_temporary = is_temporary
        self.new_table_name = new_table_name
        self.on_commit_delete_rows = on_commit_delete_rows
        self.on_commit_drop = on_commit_drop


@compiles(CreateTableAs)
def s_create_table_as(element, compiler, **kw):
    """Compile the statement."""
    text = compiler.visit_select(element)
    spec = ['CREATE', 'TABLE', element.new_table_name, 'AS SELECT']

    if element.is_temporary:
        spec.insert(1, 'TEMPORARY')

    on_commit = None

    if element.on_commit_delete_rows:
        on_commit = 'ON COMMIT DELETE ROWS'
    elif element.on_commit_drop:
        on_commit = 'ON COMMIT DROP'

    if on_commit:
        spec.insert(len(spec)-1, on_commit)

    text = text.replace('SELECT', ' '.join(spec))
    return text
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SQLAlchemy 核心创建临时表为 的相关文章

随机推荐

  • 类似于 ftrace 打印 CPU 编号

    我想打印当前进程或函数正在执行的 CPU 编号 类似于 ftrace 如下所示 TASK PID CPU TIMESTAMP FUNCTION
  • 我无法获得可样式化的属性数组

    我使用 attrs 声明一个可样式化的视图 并以简单的方式创建了文件 myview attrs xml
  • 类库中 app.config 中的连接字符串

    我正在创建解决方案 里面有三个项目 WCF 服务库项目 数据访问项目 类库 用于托管 WCF 服务的网站 该服务的实现位于项目 1 上 但为了访问数据库 我使用了第二个项目 该项目使用类库项目实现数据访问 这个问题是为了获得数据访问 我需要
  • 将数字列表分为 2 个等和列表的算法

    有一个数字列表 该列表将被分为 2 个大小相等的列表 并且总和相差最小 金额必须打印出来 Example gt gt gt que 2 3 10 5 8 9 7 3 5 2 gt gt gt make teams que 27 27 对于某
  • Actionscript3 到 JavaScript 通信:最佳实践

    那么在更抽象的层面上上一个问题 https stackoverflow com questions 299729 javascript to flash communication 根据我的经验 有 3 种方法可以使用 AS3 从嵌入式 s
  • 通过 less 生成 CSS 组

    是否能够创建这样一个生成CSS组的mixin 我将在下面解释我的意思 fancymixin max prefix content what I don t know how to code fancymixin 10 x 它会生成类似以下内
  • MySQL:SELECT 语句区分大小写吗?

    是MySQLSELECT查询默认区分大小写还是不区分大小写 如果没有 我必须发送什么查询才能执行如下操作 SELECT FROM table WHERE Value iaresavage 事实上 真正的价值Value is IAreSava
  • 使用对象浏览器中未列出的对象属性

    我一直在深入研究 VBA 中对象属性和方法的底层结构 我刚刚读到每个对象的所有属性和方法都列在开发人员框中的 对象浏览器 中 之所以提示我查看此内容 是因为我使用了对象浏览器中未列出的方法 我用了 Sheets Front face Sha
  • clojure core.async 通道如何清理?

    我是第一次了解 Clojure core async 并且正在阅读 Rich Hickey 的精彩演示 http www infoq com presentations clojure core async http www infoq c
  • pyspark 是否会更改优化指令的顺序?

    假设我有以下管道 df orderBy foo limit 10 show 在这里我们可以看到orderBy指令首先出现 因此数据帧的所有行都应在指令之前排序limit指令被执行 我发现自己在想 Spark 是否在管道内进行一些 重组 以提
  • 从 ASP Classic 迁移到 .NET 并缓解痛苦

    我们正在 NET 3 5 中重新设计网站面向客户的部分 到目前为止一切进展顺利 我们使用相同的工作流程和存储过程 在大多数情况下 最大的变化是 UI ORM 从字典到 LINQ 当然还有语言 到目前为止 大多数页面都是微不足道的 但现在我们
  • AlertDialog 样式 - 如何更改标题、消息等的样式(颜色)

    我已经为这件事伤透了脑筋 我需要做的是 改变所有的风格AlertDialog在我的 Android 应用程序中 对话框背景需要是白色的 文本需要是黑色的 我尝试创建很多样式 主题 并从代码 清单等中应用 但就文本颜色而言没有成功AlertD
  • Python 中的 HMAC SHA1 摘要

    我正在使用移动API https dev moves app com获取一些健身数据 我不想定期查询 API 而是使用故事情节通知 https dev moves app com docs api notifications 它有效 我收到
  • 为什么 join 失败并出现“java.util.concurrent.TimeoutException: Futures timed out after [300秒]”?

    我正在使用 Spark 1 5 我有两个以下形式的数据框 scala gt libriFirstTable50Plus3DF res1 org apache spark sql DataFrame basket id string fami
  • 如何在 Google Cloud Run 上运行 WordPress?

    Google Cloud Run 是新的 可以在上面运行 WordPress docker 吗 也许使用 gce 作为 mysql mariadb 的数据库 找不到任何关于此的讨论 虽然我认为这是可能的 但是花时间来完成这个练习并不好 Cl
  • 获取最近发生的星期日

    我需要在日历视图中显示当前的一周 从周日开始 在 Javascript 中确定 上周日 最安全的方法是什么 我使用以下代码计算它 Date prototype addDays function n return new Date this
  • getDownTime() 和 getEventTime()

    getEventTime 和 getDownTime 有什么区别 在文档中http developer android com reference android view MotionEvent html http developer a
  • 是否有符号到无符号的转换以及返回,定义了整数的行为?

    include
  • cakephp 3.x 级联删除不起作用

    我有 3 个表 分别为文章 评论 地址 articles gt fields id title body comments gt fields id article id comment addresses gt fields id art
  • SQLAlchemy 核心创建临时表为

    我正在尝试使用 PostgreSQLCREATE TEMPORARY TABLE foo AS SELECT SQLAlchemy Core 中的查询 我已经浏览了文档 但没有找到执行此操作的方法 我有一个 SQLA 语句对象 如何根据其结