So, I can use that way in inserting one row, but can't when inserting multiple rows ? It is correct ?
2008/11/24 Michael Bayer <[EMAIL PROTECTED]>: > > oh, right. Column objects only work when you say insert().values(**dict). > > > MikeCo wrote: >> >> Using 0.5.0rc4 doesn't seem to do that. or what am I doing wrong? >> >> The test, http://pastebin.com/fd0653b0 , looks like when using the >> Column object, the values inserted are all None (test 1). When the key >> is the fully qualified "table.column", the value inserted is always >> the default value for the column (test 3). It only works correct when >> the key is the string for the unqualified column name (tests 2 and 4). >> >> >> On Nov 24, 10:37 am, "Michael Bayer" <[EMAIL PROTECTED]> wrote: >>> the actual Column object or its "key" can be placed in the dict. >>> >>> MikeCo wrote: >>> >>> > Oops, not quite right. str(table.c.colname) returns 'table.colname", >>> > and that doesn't work right as dictionary key. You need "col" only as >>> > dictionary key. >>> >>> >http://pastebin.com/fd0653b0 has some tests >>> >>> > Interesting question is does SA intend that "table.colname" work in >>> > the dictionary definition? >>> >>> > -- >>> > Mike >>> >>> > On Nov 23, 8:58 am, MikeCo <[EMAIL PROTECTED]> wrote: >>> >> Your dictionary key CartItemTable.c.colname is an instance of class >>> >> Column, The dictionary keys need to be strings. Use str >>> >> (CartItemTable.c.colname) to get the string name of the column and it >>> >> should work. >>> >>> >> >>> CartItemTable.c.userId >>> >>> >> Column('userId', Integer(), ForeignKey('User.userId'), >>> >> table=<CartItem>, primary_key=True, nullable=False)>>> >>> >> str(CartItemTable.c.userId) >>> >>> >> 'CartItem.userId' >>> >>> >> -- >>> >> Mike >>> >>> >> On Nov 23, 8:12 am, "Petr Kobalíèek" <[EMAIL PROTECTED]> >>> wrote: >>> >>> >> > Hi devs, >>> >>> >> > I don't understand one thing: >>> >>> >> > I have table: >>> >>> >> > CartItemTable = sql.Table( >>> >> > "CartItem", meta.metadata, >>> >>> >> > # Relations >>> >> > sql.Column("userId" , sql.Integer , >>> >> > sql.ForeignKey("User.userId"), nullable=False, primary_key=True), >>> >> > sql.Column("productId" , sql.Integer , >>> >> > sql.ForeignKey("Product.productId"), nullable=False, >>> >> > primary_key=True), >>> >> > sql.Column("variantId" , sql.Integer , >>> nullable=True, >>> >> > default=None), >>> >>> >> > # Count of items in shopping cart >>> >> > sql.Column("count" , sql.Integer , >>> >> > nullable=False, default=1) >>> >> > ) >>> >>> >> > and I want to insert multiple rows to it using sql: >>> >>> >> > Session().execute( >>> >> > CartItemTable.insert(), >>> >> > [{ >>> >> > CartItemTable.c.userId : self.user.userId, >>> >> > CartItemTable.c.productId : item.product.productId, >>> >> > CartItemTable.c.variantId : vid(item.variant), >>> >> > CartItemTable.c.count : item.count >>> >> > } for item in self.items] >>> >> > ) >>> >>> >> > But this not works and I must use this way: >>> >>> >> > Session().execute( >>> >> > CartItemTable.insert(), >>> >> > [{ >>> >> > "userId" : self.user.userId, >>> >> > "productId" : item.product.productId, >>> >> > "variantId" : vid(item.variant), >>> >> > "count" : item.count >>> >> > } for item in self.items] >>> >> > ) >>> >>> >> > Why is not working first syntax, what em I missing ? >>> >>> >> > Cheers >>> >> > - Petr >> > >> > > > > > --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
