在 __init__(self) 中使用 sqlalchemy.create_engine() 时出现编程错误

问题描述 投票:0回答:0

这些方法在单个函数中工作得很好,但如果我尝试在类中实现它,它就会崩溃。

class SqlDownload():
    
    def __init__(self):
        driver="ODBC Driver 17 for SQL Server"
        connection_url = f"database?driver={driver}"
        self.engine = sa.create_engine(connection_url)
    
    def get_uploaded(self):
        engine = self.engine
        query = "SELECT DISTINCT name FROM [db_Dev].[de].[ti]"
        df = pd.read_sql(sql=query, con=engine)
        uploaded_list = df["name"].to_list()
        return uploaded_list

d = SqlDownload()
d.get_uploaded()

上面的方法不起作用,但是这个可以:

def get_uploaded():
        driver="ODBC Driver 17 for SQL Server"
        connection_url = f"database?driver={driver}"
        engine = sa.create_engine(connection_url)
        query = "SELECT DISTINCT name FROM [db_Dev].[de].[ti]"
        df = pd.read_sql(sql=query, con=engine)
        uploaded_list = df["name"].to_list()
        return uploaded_list

get_uploaded()

为什么?我如何让它与班级一起工作?我有其他下载功能,在不同的表上使用相同的连接/引擎。

我收到此错误(仅适用于前者):

sqlalchemy.exc.ProgrammingError: (pyodbc.ProgrammingError) ('42S02', "[42S02] [Microsoft][SQL Server 的 ODBC 驱动程序 17][SQL Server]无效的对象名称 'db_Dev.de.ti'

python class sqlalchemy pyodbc
© www.soinside.com 2019 - 2024. All rights reserved.