On Tuesday 16 February 2010 07:01 PM, avdd wrote:

Now the specific problem you see is that the ORM uses the declared
ForeignKeys to determine how to join tables for a relation, but on
your Detail table you have two foreign keys back to account and the
ORM doesn't know which one to use.

Even I have the same problem.
If one table has 2 columns as foreign keys which refer back to one column in the parent table, how do we sort this problem out?


Happy hacking.
Krishnakant.

On Feb 16, 9:49 pm, anusha kadambala<[email protected]>
wrote:
hello all,

My tables are giving following error at the time of querying. The tables got
created properly but when i query on some table it is showing error on other
tables.I didnt understand whats the issue here. I am querying on login table
it is giving error on debitnote details tables.

Tables:
**************************
class Login(Base):
     __tablename__ = 'login'
     usercode = Column(Integer,primary_key=True)
     username = Column(Text)
     userpassword = Column(Text)
     userrole = Column(Text)

     def __init__(self,username,userpassword,userrole):
         self.username = username
         self.userpassword = userpassword
         self.userrole = userrole

login_table = Login.__table__

class Account(Base):
     __tablename__ = "account"
     accountcode =  Column(Integer, primary_key = True)
     groupcode = Column(Integer, ForeignKey("groups.groupcode"), nullable =
False)
     groups = relation(Groups, backref = backref("Account", order_by =
accountcode))
     accountname = Column(Text, nullable = False)
     basedon = Column(Text)
     accountdesc  = Column(Text)
     openingbalance = Column(Numeric(13,2))
     openingdate = Column(TIMESTAMP)
     initialbalance = Column(Numeric(13,2))

     def
__init__(self,groupcode,groups,accountname,basedon,accountdesc,openingbalance,openingdate,initialbalance):
         self.groupcode = groupcode
         self.groups = groups
         self.accountname = accountname
         self.basedon = basedon
         self.accountdesc = accountdesc
         self.openingbalance = openingbalance
         self.openingdate = openingdate
         self.initialbalance = initialbalance

account_table = Account.__table__

class DebitnoteMaster(Base):
     __tablename__ = "debitnotemaster"
     vouchercode = Column(String(40), primary_key = True)
     sbillno = Column(String(40))
     voucherdate = Column(TIMESTAMP, nullable = False)
     reffdate = Column(TIMESTAMP)
     booktype = Column(Text)
     chequeno = Column(Text)
     bankname = Column(Text)
     debitnarration = Column(Text, nullable = False)

     def
__init__(self,vouchercode,sbillno,voucherdate,reffdate,booktype,chequeno,bankname,debitnarration):
         self.vouchercode = vouchercode
         self.sbillno = sbillno
         self.voucherdate = voucherdate
         self.reffdate = reffdate
         self.booktype = booktype
         self.chequeno = chequeno
         self.bankname = bankname
         self.debitnarration = debitnarration

debitnotemaster_table = DebitnoteMaster.__table__

class DebitnoteDetails(Base):
     __tablename__ = "debitnotedetails"
     dndtcode = Column(Integer, primary_key = True)
     vouchercode = Column(String(40),
ForeignKey("debitnotemaster.vouchercode"))
     debitnotemaster = relation(DebitnoteMaster, backref =
backref("DebitnoteDetails", order_by = dndtcode))
     craccountcode = Column(Integer, ForeignKey("account.accountcode"),
nullable = False)
     account = relation(Account, backref = backref("DebitnoteDetails",
order_by = dndtcode))
     draccountcode = Column(Integer, ForeignKey("account.accountcode"),
nullable = False)
     account = relation(Account, backref = backref("DebitnoteDetails",
order_by = dndtcode))
     amount = Column(Numeric(13,2), nullable = False)

     def __init__(self,vouchercode,craccountcode,draccountcode,amount):
         self.vouchercode = vouchercode
         self.craccountcode = craccountcode
         self.draccountcode = draccountcode
         self.amount = amount

debitnotedetails_table = DebitnoteDetails.__table__

****************************

Error:
*****************************

Traceback (most recent call last):
   File "/usr/lib/python2.6/dist-packages/twisted/web/server.py", line 150,
in process
     self.render(resrc)
   File "/usr/lib/python2.6/dist-packages/twisted/web/server.py", line 157,
in render
     body = resrc.render(self)
   File "/usr/lib/python2.6/dist-packages/twisted/web/resource.py", line 190,
in render
     return m(request)
   File "/usr/lib/python2.6/dist-packages/twisted/web/xmlrpc.py", line 118,
in render_POST
     defer.maybeDeferred(function, *args).addErrback(
---<exception caught here>  ---
   File "/usr/lib/python2.6/dist-packages/twisted/internet/defer.py", line
106, in maybeDeferred
     result = f(*args, **kw)
   File
"/home/sonal/Desktop/gnukhata_alpha/gnukhata-server/GNUKhata-ApplicationServer/rpc_user.py",
line 53, in xmlrpc_getUser
     res = Session.query(dbconnect.Login).filter(dbconnect.Login.username ==
queryParams[0]).filter(dbconnect.Login.userpassword ==
queryParams[1]).first()
   File
"/usr/local/lib/python2.6/dist-packages/SQLAlchemy-0.6beta1-py2.6.egg/sqlalchemy/orm/scoping.py",
line 127, in do
     return getattr(self.registry(), name)(*args, **kwargs)
   File
"/usr/local/lib/python2.6/dist-packages/SQLAlchemy-0.6beta1-py2.6.egg/sqlalchemy/orm/session.py",
line 875, in query
     return self._query_cls(entities, self, **kwargs)
   File
"/usr/local/lib/python2.6/dist-packages/SQLAlchemy-0.6beta1-py2.6.egg/sqlalchemy/orm/query.py",
line 91, in __init__
     self._set_entities(entities)
   File
"/usr/local/lib/python2.6/dist-packages/SQLAlchemy-0.6beta1-py2.6.egg/sqlalchemy/orm/query.py",
line 100, in _set_entities
     self._setup_aliasizers(self._entities)
   File
"/usr/local/lib/python2.6/dist-packages/SQLAlchemy-0.6beta1-py2.6.egg/sqlalchemy/orm/query.py",
line 114, in _setup_aliasizers
     mapper, selectable, is_aliased_class = _entity_info(entity)
   File
"/usr/local/lib/python2.6/dist-packages/SQLAlchemy-0.6beta1-py2.6.egg/sqlalchemy/orm/util.py",
line 512, in _entity_info
     mapper = mapper.compile()
   File
"/usr/local/lib/python2.6/dist-packages/SQLAlchemy-0.6beta1-py2.6.egg/sqlalchemy/orm/mapper.py",
line 696, in compile
     mapper._post_configure_properties()
   File
"/usr/local/lib/python2.6/dist-packages/SQLAlchemy-0.6beta1-py2.6.egg/sqlalchemy/orm/mapper.py",
line 725, in _post_configure_properties
     prop.init()
   File
"/usr/local/lib/python2.6/dist-packages/SQLAlchemy-0.6beta1-py2.6.egg/sqlalchemy/orm/interfaces.py",
line 484, in init
     self.do_init()
   File
"/usr/local/lib/python2.6/dist-packages/SQLAlchemy-0.6beta1-py2.6.egg/sqlalchemy/orm/properties.py",
line 735, in do_init
     self._determine_joins()
   File
"/usr/local/lib/python2.6/dist-packages/SQLAlchemy-0.6beta1-py2.6.egg/sqlalchemy/orm/properties.py",
line 826, in _determine_joins
     "many-to-many relation, 'secondaryjoin' is needed as well." % (self))
sqlalchemy.exc.ArgumentError: Could not determine join condition between
parent/child tables on relation DebitnoteDetails.account.  Specify a
'primaryjoin' expression.  If this is a many-to-many relation,
'secondaryjoin' is needed as well.

--

Thanks in advance

Njoy the share of Freedom :)
Anusha Kadambala

--
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en.

Reply via email to