Как предоставить права доступа к таблице DB2 с помощью SQLAlchemy в блокноте jupyter - PullRequest
0 голосов
/ 29 октября 2019

Я следовал нескольким примерам для создания и удаления таблицы DB2 с использованием SQLAlchemy в блокноте Python Jupyter. Это отлично работает. Но после создания таблицы мне нужно установить привилегии, чтобы другие могли ее просматривать. Я использую этот код для создания новой таблицы из фрейма данных 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'))

Я могу запустить SQL в QMF, и он работает нормально. Это просто не похоже на работу с ноутбука. Мне интересно, если кто-то видит недостаток, который мне нужно исправить?

Спасибо

1 Ответ

1 голос
/ 29 октября 2019

Возможно, это связано с изоляцией транзакций, попробуйте явное управление транзакциями до / после предоставления / отзыва или настройте для автоматической фиксации

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

Работает для меня в локальной сети Db2-LUW.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...