以字符串形式打印时,SQL在python函数中不起作用

以字符串形式打印时,SQL在python函数中不起作用,sql,python-3.x,sapui5,Sql,Python 3.x,Sapui5,我试图在从SAPGUI检索数据的python函数中运行SQL代码从IBMDB2检索数据,并基于某些条件从IBMDB2提取数据。当我打印DB2的连接时,它就工作了。但是,SQL代码被打印为字符串。请注意,我没有提到登录到SAP的全部代码,因为它将非常长。当单独运行同一个脚本时,它可以很好地检索所需的数据。你知道为什么它把它当作字符串而不是SQL脚本吗 查询结果: <ibm_db_dbi.Connection object at 0x000002B8DF807588> Select *

我试图在从SAPGUI检索数据的python函数中运行SQL代码从IBMDB2检索数据,并基于某些条件从IBMDB2提取数据。当我打印DB2的连接时,它就工作了。但是,SQL代码被打印为字符串。请注意,我没有提到登录到SAP的全部代码,因为它将非常长。当单独运行同一个脚本时,它可以很好地检索所需的数据。你知道为什么它把它当作字符串而不是SQL脚本吗

查询结果:

<ibm_db_dbi.Connection object at 0x000002B8DF807588>
Select * from DBA.M82 T82 
WHERE T82.EID IN 324809

注意:在使用format为多个值提取数据时,您需要将列表转换为元组。

基本上是将字符串指定给变量,然后打印它。您需要在ibm_db包中使用函数,并使用sql变量作为参数。Martin我正在使用ibm db包导入ibm_db导入ibm_db_dbi as dbi,通过删除括号解决了此问题。当我使用括号时,我从函数中了解到的是,它被视为字符串
import win32com.client
import sys
import subprocess
import time
import pandas as pd
import numpy as np
from datetime import date
from datetime import datetime, timedelta
from multiprocessing import Process
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
from selenium.common.exceptions import TimeoutException
from time import sleep
from selenium.webdriver.support.ui import Select
import ibm_db
import ibm_db_dbi as db

def sap_login()

dsn = "DRIVER={{IBM DB2 ODBC DRIVER}};" + \
      "DATABASE=;" + \
      "HOSTNAME=;" + \
      "PORT=;" + \
      "UID=;" + \
      "PWD=;"

hdbc  = db.connect(dsn, "", "")
e_id=session.findById("wnd[0]/usr/cntlBCALV_GRID_DEMO_0100_CONT1/shellcont/shell").GetCellValue(i,"ZEMP_CODE")
sql=(""" Select * 
         from DBA.M82 T82 
         WHERE T82.EID in {}""").format(e_id)

print(sql)
                                fsdd=pd.read_sql(sql,hdbc)

sap_login()
import win32com.client
import sys
import subprocess
import time
import pandas as pd
import numpy as np
from datetime import date
from datetime import datetime, timedelta
from multiprocessing import Process
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
from selenium.common.exceptions import TimeoutException
from time import sleep
from selenium.webdriver.support.ui import Select
import ibm_db
import ibm_db_dbi as db

def sap_login()

dsn = "DRIVER={{IBM DB2 ODBC DRIVER}};" + \
      "DATABASE=;" + \
      "HOSTNAME=;" + \
      "PORT=;" + \
      "UID=;" + \
      "PWD=;"

hdbc  = db.connect(dsn, "", "")
e_id=session.findById("wnd[0]/usr/cntlBCALV_GRID_DEMO_0100_CONT1/shellcont/shell").GetCellValue(i,"ZEMP_CODE")
sql=""" Select * 
         from DBA.M82 T82 
         WHERE T82.EID in {}""".format(e_id)

print(sql)
                                fsdd=pd.read_sql(sql,hdbc)