如何在 psycopg2 中链接多个语句?
Posted
技术标签:
【中文标题】如何在 psycopg2 中链接多个语句?【英文标题】:How to chain multiple statements within psycopg2? 【发布时间】:2018-07-17 11:49:27 【问题描述】:我可以使用 psycopg2
将数据从 s3 存储桶复制到红移表中:
import psycopg2
sql = """ copy table1 from 's3://bucket/myfile.csv'
access_key_id 'xxxx'
secret_access_key 'xxx' DELIMITER '\t'
timeformat 'auto'
maxerror as 250 GZIP IGNOREHEADER 1 """
cur.execute(sql)
如何将多个 redshift 语句串起来来做这三件事:
-
数据从 s3 移出后,从 table1 创建另一个表 (table2)
将数据从 table1 移动到 table2
删除表1
我尝试了以下方法:
sql = """ copy table1 from 's3://bucket/myfile.csv'
access_key_id 'xxxx'
secret_access_key 'xxx' DELIMITER '\t'
timeformat 'auto'
maxerror as 250 GZIP IGNOREHEADER 1
create table table2 as table1
drop table table1"""
我没有返回任何错误,但没有创建表,只有副本在上面工作。我在我的 sql 中做错了什么?
【问题讨论】:
【参考方案1】:以下代码通过创建重复副本来执行 Copy from Table1
到 Table2
。然后,它会删除Table1
。
import psycopg2
def redshift():
conn = psycopg2.connect(dbname='***', host='******.redshift.amazonaws.com', port='5439', user='****', password='*****')
cur = conn.cursor();
cur.execute("create table table2 as select * from table1;")
cur.execute(" drop table table1;")
print("Copy executed fine!")
redshift()
【讨论】:
以上是关于如何在 psycopg2 中链接多个语句?的主要内容,如果未能解决你的问题,请参考以下文章
Psycopg2 SQL 语句在查询生成器中工作,但不是在 Python 中
如何在 Python 中使用 psycopg2-binary?