我有一个项目,该项目分为3个文件。
第一个是包含一些API类,最重要的是SQLConnection
类的文件。
第二个文件包含类Data
中的所有数据结构和数据逻辑
第三个文件是所有更高级别的逻辑和数据操作。
我的项目过于简单了:
"""Contents of file1"""
import pandas as pd
import getpass
from sqlalchemy import create_engine
class SQLConnection:
def __init__(self,user,hostname,db,):
self.user = user
self.hostname = hostname
self.db = db
pword = getpass.getpass("Enter password for user {}".format(user))
engine = create_engine("mysql://{}:{}@{}/{}".format(user,pword,hostname,db))
self.cnx = engine.connect()
def write_to_db(self, df, table_name):
try:
df.to_sql(table_name,con = self.cnx,if_exists='append',index=False)
except Exception as e:
print("\n \n")
print(df,"\n", e)
pass
"""Contents of file2"""
# Dependancies:
import pandas as pd
# Local imports:
from file1 import SQLConnection
class Data:
schema = ['col1','col2']
def __init__(self,foo,bar):
self.arg1 = foo
self.arg2 = bar
df = pd.DataFrame([[self.arg1,self.arg2]],columns = Data.schema)
""" !!! THIS will not work because i need to access the instance !!! """
SQLConnection.write_to_db(df,'Data')
"""Contents of file3"""
# Local imports:
from file2 import Data
entry = Data(foo="something",bar="something else")
我有一个问题,我需要在SQLConnection
类的__init__()
中使用Data
的实例。我考虑过可能要在文件3中实例化SQLConnection
,然后以某种方式将其传递给Data
,但我没有找到很多参考资料来实现此目的。
我将需要一种将类的实例传递给另一个类的方法,或者一种规避此问题的方法
答案 0 :(得分:0)
我想到的最干净的方法就是在SQLConnection
构造函数中传递Data
实例:
class Data:
def __init__(self, foo, bar, conn):
...
conn.write_to_db....
在文件3中:
from file1 import SQLConnection
from file2 import Data
conn = SqlConnection(...)
entry = Data(foo="something",bar="something else", conn=conn)