Python 红移查询不使用psycopg2

Python 红移查询不使用psycopg2,python,amazon-redshift,psycopg2,Python,Amazon Redshift,Psycopg2,我正在创建一个Python脚本,以便在红移时与模式权限(和相关表)交互。正如其他一些StackOverflow帖子所建议的,我正在使用psycopg2库 当我尝试执行一些简单的SELECT FROM查询时,我没有任何问题:我可以执行并查看没有问题的结果 例如,当我尝试创建一个新模式或授予/撤销权限时,就会出现问题。这种查询看起来不会产生任何效果 这里我展示了一个非常简单的示例,其中我尝试创建一个新的模式: conn_string = "dbname='{}' port='{}' host='{}

我正在创建一个Python脚本,以便在红移时与模式权限(和相关表)交互。正如其他一些StackOverflow帖子所建议的,我正在使用psycopg2库

当我尝试执行一些简单的
SELECT FROM
查询时,我没有任何问题:我可以执行并查看没有问题的结果

例如,当我尝试创建一个新模式或授予/撤销权限时,就会出现问题。这种查询看起来不会产生任何效果

这里我展示了一个非常简单的示例,其中我尝试创建一个新的模式:

conn_string = "dbname='{}' port='{}' host='{}' user='{}' password='{}'".format(DB_NAME, DB_PORT, DB_HOST, DB_USER, DB_PWD)
con = psycopg2.connect(conn_string)


sql = "CREATE SCHEMA new_schema"
cur = con.cursor()
cur.execute(sql)

但是当我查看红移数据库时,我没有看到任何名为
new\u schema
的新模式。当我尝试运行一些权限授予/撤销查询时,也会发生相同的行为


有人知道发生了什么吗?

您必须提交事务

con = psycopg2.connect(conn_string)

sql = "CREATE SCHEMA new_schema"
cur = con.cursor()
cur.execute(sql)
con.commit()

你使用的是同一个数据库吗?@JonScott是的,我是。证明是,如果我使用psycopg2在本地运行一些
select from
query,并在Redhsift上运行,我会看到相同的数据。即使我更改了一些权限(从红移界面),我也会看到来自psyocpg2和红移界面的更新记录,如果您按starttime desc运行
select*from STL_DDLTEXT order-您在那里看到创建架构命令了吗?如果没有,您可能需要在代码末尾使用
cur.commit()
“当我查看红移数据库时”-您使用什么工具来执行此操作?某些工具(如Aginity)不显示没有对象的模式。尝试创建一个模式,然后在该模式中创建一个表,成功了吗?或者您可以
从pg_名称空间中选择*
检查存在哪些架构。
con.commit()
用于创建新架构(如我的示例所述),但正如我在原始问题中指出的,我在授予/撤销权限方面仍然存在问题。我应该接受报告的答案并创建一个新问题,还是仍然不够好?