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

psycopg2光标。execute()传入变量表名称和项

陶烨赫
2023-03-14

我试图使用psycopg2从postgres数据库的特定表中获取一组对象。我看到的关于将变量传递给游标的所有建议。execute(SQL)命令似乎无法处理两种类型的变量

这是我第一次累了但没用的东西:

SQL = 'SELECT * FROM %s WHERE created_on < date (%s);'
cursor.execute(SQL,[(table_name), (time_from)])

这总是在插入表名称时返回语法错误

共有2个答案

萧献
2023-03-14

这就是我的解决方案:

SQL1 = 'SELECT * FROM %s' %table_name
SQL2 = SQL1+' WHERE created_on < date (%s);'
cursor.execute(SQL2, (time_from, ))

无法以正常方式传递表名,因为它们被转换为SQL命令中的对象

公西宏毅
2023-03-14

正如Antoine的评论所提到的,留档现在建议使用这种方法来组成表名。

from psycopg2 import sql

cur.execute(
sql.SQL("insert into {} values (%s, %s)")
    .format(sql.Identifier('my_table')),
[10, 20])
 类似资料:
  • 我正在尝试创建一个程序,允许用户说,输入(橙色/苹果/香蕉等),然后输入他们想要购买的数量,程序将计算总数。然而,在尝试了字符串(不能将它们相乘)和其他一些选项之后,我陷入了困境。我和无数的向导一起浏览了这个论坛,但没有结果。我插入的IF语句只是为了让它正常工作而做的最后一次尝试,当然,它崩溃了。我相信这都是些基本的东西,但我对这方面还很陌生。我还想显示一个列表供选择,可能类似于橘子:Qnty:(

  • 问题内容: 问题:是否可以在不使用字符串构造函数的情况下将变量用作表名? 信息: 我现在正在研究一个项目,该项目对来自我的恒星模拟的数据进行分类。为此,我将所有数据加载到sqlite数据库中。它工作得很好,但是我决定为数据库增加更多的灵活性,效率和可用性。我计划稍后在模拟中添加小行星,并希望为每个恒星提供一张表格。这样,我就不必查询每个太阳系中1-4k的20m个小行星的表。 有人告诉我使用字符串构

  • 问题内容: 我在PHP中有一个POST,但我并不总是知道将要处理的变量字段的名称。 我有一个可以遍历值的函数(但是我也想捕获它附带的变量名。) 一旦弄清楚如何获取变量名,我还需要弄清楚如何使函数足够智能以检测和遍历变量的数组(如果存在)(即如果我有一些复选框值)。 问题答案: 如果您只想打印整个$ _POST数组以验证是否正确发送了数据,请使用print_r: 要递归打印数组的内容: 将一些填充应

  • 问题内容: 如果我有 我如何在内部找出现在由表示的变量称为? 问题答案: 这是不可能的。即使是按引用传递也不会帮助您。您必须将名称作为第二个参数传递。 但是,您肯定要问的 不是 解决问题的好方法。

  • 问题内容: 使用ES6导入时,是否可以将某些内容导入提供变量名称的模块中? 即我想根据配置中提供的值在运行时导入一些模块: 问题答案: 不与声明。并以可静态分析的方式进行定义,因此它们不能依赖于运行时信息。 您正在寻找loader API(polyfill),但是我对规范的状态尚不清楚:

  • 问题内容: 我正在尝试编写一个简单的存储过程,该过程需要三个参数“数据库名称一”,“数据库名称二”和“表名称”。然后,sql将对每个数据库中定义的表执行行计数并将其存储。 零星地处理它,我遇到了第一个问题,即您做不到 我知道您可以在命令中使用动态sql,但这并不理想,因为我无法返回值。 下面的示例看起来像它应该工作,但是不起作用。 给出的错误信息是 当前正在使用SQL Server 2008 SP