当前位置: 首页 > 知识库问答 >
问题:

将表名作为psycopg2中的参数传递,公共表的关系不存在

汪天宇
2023-03-14

在psycopg2中将表名作为参数传递给外部公共表似乎不起作用。代码和结果如下。感谢任何帮助。

似乎我在另一个表上又遇到了同样的问题,甚至我将模式和表名分开了。你知道是什么导致了这个错误吗?谢谢!

下面是代码的屏幕截图和输出

共有1个答案

宋弘壮
2023-03-14

架构和表名必须单独传递,否则它们将在“public.wc_text”中一起引用,在“public.wc_test”中应该是“public.wc_test”。所以要么

cursor.execute(
    sql.SQL('select * from public.{} limit 1').format(
        sql.Identifier('wc_test')
    )
)

cursor.execute(
    sql.SQL('select * from {}.{} limit 1').format(
        sql.Identifier('public'),
        sql.Identifier('wc_test')
    )
)
 类似资料:
  • 问题内容: 我有大约六种通用但相当复杂的存储过程和函数,我想以一种更通用的方式使用它们。 理想情况下,我希望能够将表名作为参数传递给过程,因为当前它是硬编码的。 我所做的研究表明,我需要将过程中所有现有的SQL转换为使用动态SQL,以便从参数中拼接动态表名称,但是我想知道是否还有一种更简便的方法可以通过另一种方式引用该表? 例如: 如果是这样,如何从表名设置@MyTable变量? 我正在使用SQL

  • 问题内容: 我有3类调用,和。 在我的课程中,我想要一个这样的方法: 因此,例如,我想: 如何将类名作为参数,并基于该类名从类名创建适当的对象? 问题答案: 使用反射是可能的。这里是给定的className(作为字符串传递)。此类将在内存中搜索(应该已经加载)。 作为字符串传递时要实例化的类的名称应 完全限定

  • 问题内容: 如何指定参数为表名? 问题答案: 你不能 相反,您需要将其作为VARCHAR2字符串传递,然后使用动态SQL: 阅读有关Dynamic SQL的信息, 并注意如果不正确地使用它会带来的问题,例如性能,可伸缩性和安全性较差。

  • 问题内容: 例如,这不起作用: 产生: 但是,这按预期工作: 在select语句中使用参数作为表名需要什么语法?这有可能吗? 问题答案: 准备好的语句是您所需要的。

  • 问题内容: 我有一个存储过程,它将列名和表名作为参数。 此过程给我一个错误: 必须声明标量变量@TableName 尽管我已经在顶部声明了它。 问题答案: 使用动态SQL:

  • 问题内容: 我正在创建一种通过传递搜索字段从任何表中选择ID的方法。 但是我得到一个有关语法错误的MySqlException。当我查看“异常”消息时,它向我显示带引号的查询表!如何将表格作为不带引号的参数传递? 问题答案: 大多数数据库不允许您通过参数指定表名或列名。参数用于 值 。如果确实确实需要使它动态化,则应验证输入(它应该是一个已知的表名,并且该表中具有已知的列名),然后将其包括在SQL