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