因此,我正在研究Python脚本以从redshfit中的特定列中获取所有行。这个想法是在第二个SQL命令中循环遍历列中的每个项目以进行更改。例如,我正在考虑从特定模式中提取表名,然后执行ALTER TABLE来更改每个表的所有者。下面是我得到的代码:返回SQL查询结果作为python中的变量
def alter_table(schema,new_owner):
select = "SELECT talbe_name FROM information_schema.tables WHERE talbe_schema = %s"
args = (schema,)
cur.execute(select,args)
for table_name in cur:
print table_name
alter = "ALTER TABLE %s.%s OWNER TO %s"
args2 = (table_name,schema,new_owner)
cur.execute(alter,args2)
cur.conn.commit()
现在,这几乎作品。我遇到的问题是将select语句中的“table_name”传递给alter语句。 select语句给出了打印命令的输出如下:
('TABLE_NAME',)
然后把它传递给ALTER语句,如:
ALTER TABLE ('TABLE_NAME',).schema OWNER TO new_Owner
然后ALTER语句失败:
syntax error at or near "("
认为需要发生的是,select语句中的特殊字符需要被删除,以便TABLE_NAME不经过t下摆。显然,我的谷歌搜索技巧缺少一些东西,所以任何想法都会有所帮助。谢谢!
你好,感谢您的回应!我必须对for循环进行更改,以便该命令遍历每个表名,但它的作用就像一个魅力。 – user3140412