Hi Rick,

I am afraid I reported success a bit too fast.

The problem has changed though.

I am using rev 2492.

If I use the "MakerCost" mapper as it is defined in my previous email,
I get a strange behaviour:
        If I query a MakerCost  directly (e.g.
session.query(MakerCost).select_by(..))  things work fine.

        If I get the MakerCost objects  indirectly, first by getting a
Maker and then going through the "Costs" list, all the MakerCost
objects I get have a "Cost" attribute that is None.

    If I change the mapper to
          MakerCost.mapper["Primary"]=mapper(MakerCost,tblMakerCost)

         and use "MakerCost" instead of "Cost" as the attribute,   it
works fine

It seems to me that the renaming of attributes vs. column name has
some issue.

It is easy to work around it in any case.

Cheers,
          François

On Apr 4, 10:08 pm, "Rick Morrison" <[EMAIL PROTECTED]> wrote:
> Hi fw,
>
> The explicit zero for the
> float column was a bug that should be fixed in rev #2491.
>
> MSSQL can store low-resolution datetimes in DATE columns, and the format for
> MSSQL Date columns was expanded to allow storing those (note the missing
> seconds in the format).
>
> That date change should not affect your queries -- does it?
>
> On 4/4/07, fw <[EMAIL PROTECTED]> wrote:
>
>
>
> > Hi list,
>
> > I am using a mssql database.
>
> > A mapper that was working in 0.3.4, no longer works in 0.3.6,
>
> > The query built is apparently the same, but the values used as
> > parameters are not the same.
>
> > Under 0.3.4 it was
> >       INFO sqlalchemy.engine.base.Engine.0x..d0 {'lazy_fa2e': 'xxxxx',
> > 'MakerCost_MakerCost': '0', 'MakerCost_Effective_Date': '2007-04-04'}
>
> > Under 03.6 it has become
> >        INFO sqlalchemy.engine.base.Engine.0x..d0
> > {'MakerCost_MakerCost': None, 'lazy_e4bf': 'xxxxx',
> > 'MakerCost_Effective_Date': '2007-04-04 00:00'}
>
> > As you can see MakerCost has become None instead of 0 (zero) and the
> > Date has turned into a Datetime. Note that the 0 (zero) is explicitly
> > specified in a query.
>
> > What is going on? Any pointer appreciated.
>
> > TIA
> >         François
>
> > Here are the gruesome details
>
> > The MakerCost  table associate the Maker and the Model tables. It also
> > has a "Cost" and a "Date" fields.
>
> > The mapped "Cost" property retrieves only the "current" cost. It is
> > when using the "Cost" property  that the problem occurs (In the info
> > above, the "Cost" property on a "Maker" object)
>
> > tblMaker=Table("Maker",
> >         Column("MAKERCODE",StripString, primary_key = True),
> >         Column("NAME" , CP874String,nullable=False),
> >         Column("ADDR0",String(40),nullable=True),
> >         Column("ADDR1",String(40),nullable=True),
> >         Column("ADDR2",String(40),nullable=True),
> >         Column("ADDR3",String(40),nullable=True),
> >         Column("TBCODE",String,nullable=False),
> >         Column("CONTACT",String,nullable=False),
> >         Column("COMMENTS",String),
> >         Column("DSTAMP",DateTime),
> >         Column("USERNAME",String(8)))
>
> > tblModel=Table("Model",
> >         Column("ModelCode",CodeString(20), primary_key = True),
> >         Column("ModelGroup",String(12),nullable=False),
> >         Column("ModelThaiName",CP874String(50),nullable=False),
> >         Column("ModelEnglishName",StripString(50),nullable=False),
> >         Column("ModelWeight",Float),
> >         Column("UnitCode",String(5)),
> >         #Column("ProductGroupCode",ForeignKey("... TODO
> >         Column("ModelRemark",CP874String(50)),
> >         Column("EffectDate",Date),
> >         Column("LastDate",DateTime),
> >         Column("LastUser",String(8)))
>
> > tblMakerCost=Table("MakerCost",
> >         Column("RowOrder",Integer, primary_key = True),
> >         Column("MakerCode" , StripString(50),ForeignKey("Maker.MAKERCODE
> > ")),
> >         Column("ModelCode" , CodeString,ForeignKey("Model.ModelCode")),
> >         Column("MakerCost",Float,nullable=False),
> >         Column("Remark",CP874String(100)),
> >         Column("Reference",CP874String()),
> >         Column("Effective_Date",Date),
> >         Column("LastUpdate",DateTime),
> >         Column("LastUser",String(8)))
>
> > MakerCost.mapper["Primary"]=mapper(MakerCost,tblMakerCost,
> > properties={
> >         'Cost': tblMakerCost.c.MakerCost,
> >         'id':tblMakerCost.c.RowOrder,
> >         }
> > )
>
> > #Getting only the latest costs
> > sCCSub=select([tblMakerCost.c.MakerCode, tblMakerCost.c.ModelCode,
> > func.max(tblMakerCost.c.Effective_Date).label('Effective_Date')],
> > tblMakerCost.c.Effective_Date<=datetime.date.today(),group_by=[
> > tblMakerCost.c.MakerCode,
> > tblMakerCost.c.ModelCode]).alias('sCCSub')
>
> > sCurrentCost=select([c for c in
> > tblMakerCost.c],tblMakerCost.c.MakerCost
> > >0,from_obj=[join(tblMakerCost,sCCSub,and_(
> > sCCSub.c.MakerCode==tblMakerCost.c.MakerCode,and_(
> > sCCSub.c.ModelCode==tblMakerCost.c.ModelCode,
> > sCCSub.c.Effective_Date==tblMakerCost.c.Effective_Date
> > )))]).alias('sCurrentCost')
>
> > Maker.mapper["Primary"]=mapper(Maker, tblMaker, properties={
> >         'AllCosts':relation(MakerCost, backref='Maker',lazy=True,
> > cascade="all, delete-orphan"),
> >         'Costs': relation(mapper(MakerCost,sCurrentCost,
> > non_primary=True),
> > uselist=True, viewonly=True),
> >          #Models':
> > relation(Model,secondary=tblMakerCost,secondaryjoin=
> > tblModel.c.ModelCode==tblMakerCost.c.ModelCode,
>
> > #primaryjoin=tblMaker.c.MAKERCODE==tblMakerCost.c.MakerCode,uselist=True,
> > viewonly=True),
> >         'Name':tblMaker.c.NAME,
> >         'Code':tblMaker.c.MAKERCODE,
> >         'Contact': tblMaker.c.CONTACT,
> >         'Comment': tblMaker.c.COMMENTS,
> >         'LastUpdate':tblMaker.c.DSTAMP,
> >         'LastUser':tblMaker.c.USERNAME
> >         }
> > )
>
> > Model.mapper["Primary"]=mapper(Model,tblModel, properties={
> >         'AllCosts':relation(MakerCost,backref='Model',lazy=True,
> > cascade="all, delete-orphan"),
> >         'Costs': relation(mapper(MakerCost,sCurrentCost,
> > non_primary=True),
> > uselist=True, viewonly=True),
> >         'Makers':
> > relation(Maker,secondary=tblMakerCost,primaryjoin=
> > tblModel.c.ModelCode==tblMakerCost.c.ModelCode,
>
> > secondaryjoin=tblMaker.c.MAKERCODE==tblMakerCost.c.MakerCode
> > ,backref="Models",uselist=True,
> > viewonly=True),
> >         'Code':tblModel.c.ModelCode,
> >         'Weight':tblModel.c.ModelWeight,
> >         'Start_Date':tblModel.c.EffectDate,
> >         'Products': relation(Product, backref='Model',lazy=True,
> > cascade="all, delete-orphan"),
> >         }
> > )


--~--~---------~--~----~------------~-------~--~----~
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