2016-06-16 3 views
0

Я использую PyTd teradata модуль для запроса данных от Teradata и хочу, чтобы прочитать его в панде DataFramePython PyTd Teradata запрос в Панде DataFrame

import teradata 
import pandas as pd 

# teradata connection 
udaExec = teradata.UdaExec(appName="Example", version="1.0", 
          logConsole=False) 
session = udaExec.connect(method="odbc", system="", username="", password="") 

# Create empty dataframe with column names 
query = session.execute("SELECT TOP 1 * FROM table") 
cols = [str(d[0]) for d in query.description] 
df = pd.DataFrame(columns=cols) 

# Read data into dataframe 
for row in session.execute("SELECT * FROM table"): 
    print type(row) 
    df.append(row) 

row имеет teradata.util.Rowclass и не может быть добавлен dataframe. Я попытался преобразовать его в список, но формат перепутался.

Как я могу прочитать свои данные в dataframe из Teradata с помощью модуля teradata? Для этого я не могу использовать модуль pyodbc.

Есть ли лучший способ создать пустой фреймворк с именами столбцов, соответствующими именам в базе данных?

ответ

0

Я знаю его немного поздно. Но тем не менее, отмечая записку.

Здесь есть несколько вопросов.

Как я могу прочитать свои данные в dataframe из Teradata, используя модуль tadata ?

В конце дня, teradata.util.Row - это просто список. Таким образом, простая операция списка должна помочь вам получить информацию из строки.

','.join(str(item) for item in row) 

видa предмет.

Нажатие этого в рамку данных pandas должно быть списком для упражнения преобразования df.

Я не могу использовать модуль pyobbc для этого.

Я использовал модуль python teradata для выполнения LDAP-аутентификации. Все работало нормально. Не было этого требования. Сожалею.

Есть ли лучший способ создать пустой фреймворк с именами столбцов, соответствующими именам в базе данных?

Я предполагаю, что, учитывая имя таблицы, вы можете запросить его схему (имена таблиц) >> преобразовать это в список и создать свой pandas df?

3

Вы можете использовать pandas.read_sql :)

import teradata 
import pandas as pd 

# teradata connection 
udaExec = teradata.UdaExec(appName="Example", version="1.0", 
          logConsole=False) 
with udaExec.connect(method="odbc", system="", username="", password="") as session: 


    query ="SELECT * FROM table" 

    df = pd.read_sql(query,session) 

Использование «с» обеспечит закрытие сессии после запроса. Надеюсь, что это помогло :)

Смежные вопросы