使用python从teradata获取表列表时出现语法错误

时间:2018-06-20 21:56:07

标签: sql python-2.7 teradata

出于学习目的,我试图从Teradata获取表列表 在Python中使用以下代码:

import jaydebeapi
import pandas as pd

try:
   conn = jaydebeapi.connect(jclassname='com.teradata.jdbc.TeraDriver',
                                      url="jdbc:teradata://10.10.10.10",
                                      driver_args=['@user','@pss'],
                                      jars=['/mnt/TERADATA/tdgssconfig.jar','/mnt/TERADATA/terajdbc4.jar'])

   print("Connection was successful")
except Exception as e:
        print(e)

 #df = pd.read_sql_query('SELECT Databasename,TableName FROM dbc.tables WHERE tablekind = \'T\'',conn)
  dfr = pd.DataFrame(df)
  print(dfr.head(3))

上面的方法工作正常,但是当我尝试根据数据库名称获取表列表时,则工作不正常:

 df = pd.read_sql_query('SELECT Databasename,TableName FROM dbc.tables WHERE tablekind = \'T\' and DatabaseName ='SALES'',conn)
 dfr = pd.DataFrame(df)
 print(dfr.head(3))

获取:

Error: Invalid Syntax

已经花了几个小时试图弄清楚,但无法通过它。问这个问题很愚蠢,但是请告诉我我要去哪里错了。

Ref: https://forgetcode.com/Teradata/1433-To-get-all-the-tables

1 个答案:

答案 0 :(得分:1)

也许这只是Python语法。我希望:

df = pd.read_sql_query("""SELECT Databasename, TableName FROM dbc.tables WHERE tablekind = 'T' and DatabaseName = 'SALES'""", conn)

如您所写,SALES位于字符串之外,无疑会导致语法错误。