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

Syntax error while fetching table list from teradata using python

出于学习目的,我正在尝试从 Teradata 获取 table 列表 在 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))

以上工作正常,但是当我尝试根据数据库名称获取 table 列表时,一切都不起作用:

 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

也许这只是一个 Python 语法问题。我希望:

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

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