2016-01-22 3 views
2

Кто-нибудь нашел способ прочитать запрос Teradata в кадре данных Pandas? Похоже, SQLAlchemy не имеет диалекта Teradata.Прочитайте запрос Teradata в Pandas

http://docs.sqlalchemy.org/en/latest/dialects/

http://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_sql.html

+1

Может быть, посмотрите на это: https://github.com/grisaitis/sqlalchemy-teradata – joris

+0

Выглядит многообещающе, но, к сожалению, он написан для Python 3 – atm

ответ

2

Я сделал это с помощью read_sql. Ниже ид код чик:

def dqm() : 
    conn_rw = create_connection() 
    dataframes = [] 
    srcfile = open('srcqueries.sql', 'rU').read() 
    querylist = srcfile.split(';') 
    querylist.pop() 
    for query in querylist : 
     dataframes.append(pd.read_sql(query, conn_rw)) 
    close_connection(conn_rw) 
    return dataframes,querylist 

Вы можете создать соединение, как показано ниже:

def create_connection(): 
     conn = pyodbc.connect("DRIVER=Teradata;DBCNAME=tddb;UID=uid;PWD=pwd;QUIETMODE=YES", autocommit=True,unicode_results=True) 
     return conn 

Вы можете проверить полный код здесь: GitHub Link Дайте мне знать, если это отвечает на ваш запрос.

+0

Спасибо за ответ! Итак, вы используете pyodbc вместо sqlalchemy для создания соединения, не так ли? – atm

+0

Справа. Если вы планируете их установить, я предлагаю менеджер пакетов. – minatverma

1

Вы можете использовать slqalchemy, но вам также потребуется установить sqlalchemy-teradata. Вы можете сделать это с помощью PIP

pip install sqlachemy-teradata 

Остальная часть кода остается тем же :)

from sqlalchemy import create_engine 
import pandas as pd 

user, pasw, host = 'username','userpass', 'hostname' 

# connect 
td_engine = create_engine('teradata://{}:{}@{}:22/'.format(user,pasw,hostname)) 

# execute sql 
query = 'select * from dbc.usersV' 
result = td_engine.execute(query) 

#To read your query to Pandas 
df = pd.read_sql(query,td_engine) 
Смежные вопросы