Как применить несколько whereclause в sqlalchmey в dask при извлечении большого набора данных из teradata

#python-3.x #sqlalchemy #dask #teradatasql

#python-3.x #sqlalchemy #dask #teradatasql

Вопрос:

Я пытаюсь извлечь больший набор данных из teradata, используя dask и sqlalchmey. Я могу применить один whereclause и получить данные. ниже приведен рабочий код

 td_engine = create_engine(connString)
metadata = MetaData()
t = Table(
    "table",
    metadata,
    Column("c1"),
    schema="schema",
  )
sql = select([t]).where(
        t.c.c1 == 'abc',
    )
)
start = perf_counter()
df = dd.read_sql_table(sql, connString, index_col="c1",schema="schema")
end = perf_counter()
print("Time taken to execute the code {}".format(end - start))
print(df.head())
  

но когда я пытаюсь применить и в whereclause я получаю ошибку

 sql = select([t]).where(
and_(
        t.c.c1 == 'abc',
        t.c.c2 == 'xyz'
    )
)
  

Комментарии:

1. Пожалуйста, покажите свое исключение. Это может быть сложно, но потенциальным авторам ответов было бы очень полезно, если бы вы могли создать базу данных (sqlite) со структурой, аналогичной вашим собственным данным.

Ответ №1:

Было бы полезно больше контекста. Если вам просто нужно выполнить запрос, рассматривали ли вы возможность использования функции pandas read_sql и самостоятельного составления SQL-запроса?

 import teradatasql
import pandas as pd
with teradatasql.connect(host="whomooz",user="guest",password="please") as con:
  df = pd.read_sql("select c1 from mytable where c1='abc' and c2='xyz'", con)
  print(df.head())
  

Или есть особая необходимость использовать функции pandas для построения SQL-запроса?

Комментарии:

1. OP спросил о dask, который имеет ограничения для загрузки из SQL.