pyodb c, способ создания и вставки в таблицу красного смещения за один шаг - PullRequest
0 голосов
/ 23 марта 2020

В конечном итоге я хотел бы создать сценарий, который: 1. регистрирует меня в моем кластере красных смещений - 2. запускает инструкцию DROP TABLE IF EXISTS - 3. заново создает таблицу - 4. вставляет данные из объекта Pandas DataFrame в таблица

Я могу сделать это в 2 сценариях - один, который выполняет шаги 1-3, а затем 2d, который выполняет шаг 4. Мне было интересно, можно ли это сделать в одном сценарии. В следующем сценарии я пытаюсь использовать 2 курсора для выполнения sh этого факта - но безуспешно.

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 и буду признателен за любые дальнейшие указания здесь

1 Ответ

0 голосов
/ 27 марта 2020

Вы пробовали SQLAlchemy.

Или диалект Amazon 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 install sqlalchemy-redshift .

Как установить пакеты? -> Здесь .

Также вы можете ознакомиться с _ sql подробнее здесь .

...