我有一份合同来代表我的合同:
... / mypackage的/ Contract.py
class Contract:
# setter and getters.
def isValid( self, contract_number=None ):
#code
def cancelTheContract( self, contract_number=None ):
# code
我的SQLAlchemy Contract类:
... / mypackage的/ orm.py
from sqlalchemy import create_engine
from sqlalchemy import MetaData
from sqlalchemy import Column, ForeignKey, Integer, String, Table
from sqlalchemy.orm import *
from sqlalchemy.ext.declarative import declarative_base
db = create_engine( 'mysql://myuser:mypasswd@localhost/mydatabase' )
contracts = Table( 'contracts', MetaData( bind = None ) )
class Connection:
def connect( self ):
Session = sessionmaker( bind = db )
session = Session()
return session
class Contract( Base ):
__tablename__ = 'contracts'
id = Column( Integer, primary_key = True )
type = Column( String )
price = Column( Float )
因此...
将两个Contract类合并为一个可以吗?
如果没有,我必须实例化一个特定于数据库表的类和另一个特定于业务逻辑的类,所以当我必须处理数据库数据,操纵它并把它放回去时,我必须处理两个对象这基本上就是事情。
嗯......我想我在这里错过了一些重要的概念。
我应该阅读什么才能更好地理解我的问题含义?
谢谢! 吉奥
答案 0 :(得分:0)
是的,ORM的理念是将物理表映射到业务实体对象,因此最好将两个类组合在一起。 SQLA属性管理实体的持久字段,您可以根据标准的面向对象建模技术封装该类中的所有业务逻辑。