我最终想要构建一个-1。将我登录到我的红移集群-2。运行DROP TABLE IF EXISTS语句-3。重新创建表-4。将Pandas DataFrame对象中的数据插入表
我可以用两个脚本来完成——一个完成步骤1-3,然后用2d完成步骤4。我想知道这是否可以在一个脚本中完成。在下面的脚本中,我尝试使用2个游标来实现这一事实,但没有成功。
import pyodbc
import getpass
import pandas as pd
server = server name
database = db
user = getpass.getuser()
pwd = getpass.getpass("User Name : %s" % user)
port = port
df = pd.read_csv("file.csv")
cnxn = pyodbc.connect('DRIVER={Amazon Redshift (x64)};SERVER='+server+';DATABASE='+database+';UID='+user+';PWD='+pwd+';Port='+port+'')
cursor1 = cnxn.cursor()
cursor1.execute("DROP TABLE IF EXISTS billtest2; CREATE TABLE billtest2 (symbols varchar(15), leverages int);")
cursor2 = cnxn.cursor()
# Insert DataFrame recrds one by one.
for index, row in df.iterrows():
cursor2.execute("INSERT INTO billtest2 ([symbols],[leverages]) values(?,?)", row['symbols'], row['leverages'])
cnxn.commit()
cnxn.close()
我已经对连接进行了匿名处理,但连接是有效的——这只是我想创建并插入一个似乎不起作用的表。
我是Python的新手,如果在这里提供任何进一步的指导,我将不胜感激
您尝试过SQLAlchemy吗。
或者在您的案例中,使用亚马逊Redshift方言进行SQLAlchemy。
From sqlalchemy import create_engine
Import pandas as pd
conn = create_engine('redshift+psycopg2://username@host.amazonaws.com:5439/database')
df = pd.read_csv("file.csv")
df.to_sql('your_table',conn,index = False,if_exists = 'replace')
在此之前,您可能需要安装pip-installsqlalchemy-redshift。
如何安装软件包?->在这里
此外,您还可以在此处进一步探索to_sql。