【问题标题】:Python connected to PostgreSql Redshift database, trying to run permission sequel but unable to. How can I grant permission or run permission query?Python 连接到 PostgreSql Redshift 数据库,尝试运行权限续集但无法运行。如何授予权限或运行权限查询?
【发布时间】:2019-07-25 22:19:06
【问题描述】:

我正在尝试使用使用 psycopg2 连接到 PostgreSql 的 Python 运行查询。我能够连接,但无法运行以“grant select on ...”开头的权限查询

我已尝试执行常规的“从列限制 1 中选择 *”以查看是否建立了连接以及我是否能够进行常规查询。我已经尝试过“向用户授予选择视图”但没有工作。

permissions = "grant select on view_activities to username;"

try:
    cur.execute(permissions)
    contents = "The permissions have been run"
    message = twilioCli.messages.create(body = contents, from_=twil, to = me)
except:
    contents = "The permissions have failed"
    message = twilioCli.messages.create(body = contents, from_=twil, to = me)

预期结果是收到一条说明“权限已运行”的文本消息,这表明此查询已正常运行。但是,我得到的是第二个结果“权限失败”,这表明查询没有正确运行。我的理论是 postgres 无法运行 Python 的“grant select...”语法。

【问题讨论】:

  • 我过去曾使用 psycopg2 运行过类似的查询,您是否可以尝试禁用异常处理或仅打印引发的确切执行,然后编辑您的答案(也可以在下面标记我的用户名时发表评论)这样我就知道了)。一旦您收到异常消息,我将能够提供帮助。
  • @Yankee 我打印出异常,我相信它说“psycopg2.ProgrammingError: no results to fetch”。似乎没有返回任何内容,因此行一无所获。这就是破坏它的原因吗?查询不必总是返回一些东西,因为我们可以创建/插入/更新表而不必返回行。不知道如何让这个授予权限查询运行

标签: python sql postgresql amazon-redshift navicat


【解决方案1】:

您的代码的某些部分(可能未在此处添加)似乎正在执行 cursor.fetchall()cursor.fetchone(),这给了我同样的例外 psycopg2.ProgrammingError: no results to fetch 。一旦我删除了 .fetchall().fetchone() ,我的代码就会毫无问题地执行。

另外,请确保在执行GRANT 后运行connection.commit(),否则会回滚。

【讨论】:

    猜你喜欢
    • 2015-08-13
    • 1970-01-01
    • 1970-01-01
    • 2013-09-22
    • 2021-10-18
    • 1970-01-01
    • 2017-11-30
    • 2010-10-05
    • 1970-01-01
    相关资源
    最近更新 更多