我想將sqlalchemy的會話對象發送到另一個類的函數。作爲參數傳遞的對象範圍 - Python
從類OraDialog的功能oraconnect到類oraconn的分配功能。
其實我需要的是使用會話對象oraconn的另一個功能地圖
,因爲它是一個我不能直接發送會話對象地圖功能插槽 - 它之前被觸發。 我打算定義assign函數來獲取會話對象。
的誤差:(包括打印語句)
<sqlalchemy.orm.session.Session object at 0x030808F0>
<sqlalchemy.orm.session.Session object at 0x030808F0>
This is in assign
None
This is in map
Traceback (most recent call last):
File "C:\Users\Arul\Desktop\dbvis\oraconn.py", line 44, in map
for t in self.s.query(tables):
AttributeError: 'NoneType' object has no attribute 'query'
的oraconn類的分配和映射功能:
def assign(self,s):
self.s=s
print self.s
print "This is in assign"
def map(self):
print self.s
print "This is in map"
self.table_no=0
for t in self.s.query(tables):
self.table_no=self.table_no+1
table_list.append(t.table_name)
self.item=QtCore.QStringList()
for c in self.s.query(columns):
self.item.append(c.column_name)
self.ui.list_col.addItems(self.item)
SO, 的分配功能適當地接收對象。但是地圖功能不能使用它 - 它表示Nonetype
我的問題: 同一類的兩個函數不能使用一個對象嗎?
我一定做了什麼愚蠢的 - 所以PLZ指出......
(我用的windows7/Python的2.6/PyQt4的/ SQLAlchemy的/ cx_oracle)
編輯:
調用類:
class OraDialog(QtGui.QDialog):
def __init__(self,parent=None):
QtGui.QDialog.__init__(self,parent)
self.odia=Ui_Dialog()
self.odia.setupUi(self)
self.uiobj=oraconn()
QtCore.QObject.connect(self.odia.but_con,QtCore.SIGNAL('clicked()'),self.uiobj.oraconnect)
def oraconnect(self):
self.setVisible(0)
eng_str="oracle://"+self.odia.line_user.text()+":"+self.odia.line_pass.text()+"@localhost:1521/"+self.odia.line_sid.text()+"?mode="+self.odia.line_role.text()
engine_str=str(eng_str)
engine=create_engine(engine_str)
Session=sessionmaker(engine)
self.s=Session()
print self.s
問題就迎刃而解了:
的proble米是 - 我創建了兩個實例,並從一個傳遞到另一個。
更正代碼:
oraconn.assign(myapp,self.s)
其中
oraconn - >類
分配 - > oraconn
MyApp的功能 - > oraconn的實例,宣佈爲主要應用
self.s - >的論點我想通過
謝謝柯克....
顯示導致此問題的代碼。如何調用'assign'和'map'方法? – delnan 2011-06-03 16:00:35
你的第一個代碼片段被標記爲「The OraDialog類的oraconnect函數:」。我無法分辨你的意思。這兩個方法在一個名爲OraDialog的類中? – 2011-06-03 19:38:17
@Kirk Strauser,哎呀,對不起,我的錯誤...我現在編輯過。 – vettipayyan 2011-06-04 04:58:17