【问题标题】:How to grant access privileges to DB2 table using SQLAlchemy in a jupyter notebook如何在 jupyter notebook 中使用 SQLAlchemy 授予对 DB2 表的访问权限
【发布时间】:2020-02-24 05:27:16
【问题描述】:

我已经按照几个示例在 python jupyter notebook 中使用 SQLAlchemy 创建和删除了一个 DB2 表。这很好用。但是创建表后,我需要设置权限以便其他人可以查看它。 我使用此代码从 Pandas 数据框“df”创建一个新表

from sqlalchemy import create_engine, text
engine = create_engine(r"...")

df.to_sql(name='MYTABLE', schema='MYSCHEMA', con=engine, if_exists='replace', dtype=dashdb_typemap, index=False)

我可以用这段代码很好地删除表格:

with engine.connect() as con:
    con.execute('DROP TABLE MYSCHEMA.MYTABLE')

但是这些都不能设置权限:

with engine.connect() as con:
    con.execute('GRANT ALL ON MYSCHEMA.MYTABLE TO PUBLIC')

with engine.connect() as con:
    con.execute(text('GRANT ALL ON MYSCHEMA.MYTABLE TO PUBLIC'))

我可以在 QMF 中运行 SQL,它运行良好。它似乎在笔记本上不起作用。 我想知道是否有人看到我需要纠正的缺陷?

谢谢

【问题讨论】:

  • 什么 Db2 版本和平台? “这些都不是”是什么意思?如果您遇到错误,请逐字发布。
  • 这是 IBM 的云端 DB2。当我运行两者中的任何一个时,都不会授予权限。我没有错误

标签: python sqlalchemy db2 jupyter-notebook


【解决方案1】:

可能与事务隔离有关,在授权/撤销之前/之后尝试显式事务控制,或配置自动提交

with engine.connect() as con:
    con.execute('COMMIT')
    con.execute('GRANT ALL ON MYSCHEMA.MYTABLE TO PUBLIC')
    con.execute('COMMIT')

在本地 Db2-LUW 上为我工作。

【讨论】:

    猜你喜欢
    • 2021-07-12
    • 2018-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-10
    • 1970-01-01
    • 2020-12-25
    相关资源
    最近更新 更多