class Database:
def __inti__(self, url: str):
self.url = url
def connect_db(self, callback):
def connection(self, *args, **kwargs):
engine = create_engine(self.url)
conn = engine.connect()
query = callback(conn)
conn.close()
return query
return connection
@connect_db
def data_from_DB(self, conn, sql):
query = conn.excute(text(sql)).fetchall()
df = pd.DataFrame(query)
return df
if __name__ == '__main__':
url = 'mysql+mypysql://~~~'
sql = 'SELECT * FROM table'
data = Database(url)
df = data.data_from_DB(sql=sql)
print(df)
我试图用装饰器执行代码。但是,它没有用。错误信息如下。
Traceback (most recent call last):
File "c:\Users\82102\Documents\programming\project\economy\temp.py", line 9, in <module>
class Database:
File "c:\Users\82102\Documents\programming\project\economy\temp.py", line 24, in Database
@connect_db
^^^^^^^^^^
TypeError: Database.connect_db() missing 1 required positional argument: 'callback'
我不明白哪里出了问题,因为我以为我没有做错语法。