From: Mike Bayer Date: Sat, 22 Oct 2005 06:12:05 +0000 (+0000) Subject: (no commit message) X-Git-Tag: rel_0_1_0~475 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b8418eef7eb28adbf1eeed4b25ad6c0044ff2ec6;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git --- diff --git a/lib/sqlalchemy/databases/postgres.py b/lib/sqlalchemy/databases/postgres.py index 4b20fd57f8..6a7bf6acc2 100644 --- a/lib/sqlalchemy/databases/postgres.py +++ b/lib/sqlalchemy/databases/postgres.py @@ -111,6 +111,13 @@ class PGSQLEngine(ansisql.ANSISQLEngine): last_inserted_ids.append(newid) self.context.last_inserted_ids = last_inserted_ids + def _executemany(self, c, statement, parameters): + rowcount = 0 + for param in parameters: + c.execute(statement, param) + rowcount += c.rowcount + self.context.rowcount = rowcount + def post_exec(self, connection, cursor, statement, parameters, echo = None, compiled = None, **kwargs): if compiled is None: return if getattr(compiled, "isinsert", False): @@ -118,6 +125,7 @@ class PGSQLEngine(ansisql.ANSISQLEngine): # or post-select the row, I guess not much diff. table = compiled.statement.table if len(table.primary_keys): + # TODO: cache this statement against the table to avoid multiple re-compiles row = sql.select(table.primary_keys, sql.ColumnClause("oid",table) == bindparam('oid', cursor.lastrowid) ).execute().fetchone() self.context.last_inserted_ids = [v for v in row] diff --git a/test/tables.py b/test/tables.py index 5a081e4781..5fb7a0bad4 100644 --- a/test/tables.py +++ b/test/tables.py @@ -71,61 +71,6 @@ if CREATE: itemkeywords.create() -if DATA: - itemkeywords.delete().execute() - keywords.delete().execute() - orderitems.delete().execute() - orders.delete().execute() - addresses.delete().execute() - users.delete().execute() - users.insert().execute( - dict(user_id = 7, user_name = 'jack'), - dict(user_id = 8, user_name = 'ed'), - dict(user_id = 9, user_name = 'fred') - ) - addresses.insert().execute( - dict(address_id = 1, user_id = 7, email_address = "jack@bean.com"), - dict(address_id = 2, user_id = 8, email_address = "ed@wood.com"), - dict(address_id = 3, user_id = 8, email_address = "ed@lala.com") - ) - orders.insert().execute( - dict(order_id = 1, user_id = 7, description = 'order 1', isopen=0), - dict(order_id = 2, user_id = 9, description = 'order 2', isopen=0), - dict(order_id = 3, user_id = 7, description = 'order 3', isopen=1), - dict(order_id = 4, user_id = 9, description = 'order 4', isopen=1), - dict(order_id = 5, user_id = 7, description = 'order 5', isopen=0) - ) - orderitems.insert().execute( - dict(item_id=1, order_id=2, item_name='item 1'), - dict(item_id=3, order_id=3, item_name='item 3'), - dict(item_id=2, order_id=2, item_name='item 2'), - dict(item_id=5, order_id=3, item_name='item 5'), - dict(item_id=4, order_id=3, item_name='item 4') - ) - keywords.insert().execute( - dict(keyword_id=1, name='blue'), - dict(keyword_id=2, name='red'), - dict(keyword_id=3, name='green'), - dict(keyword_id=4, name='big'), - dict(keyword_id=5, name='small'), - dict(keyword_id=6, name='round'), - dict(keyword_id=7, name='square') - ) - itemkeywords.insert().execute( - dict(keyword_id=2, item_id=1), - dict(keyword_id=2, item_id=2), - dict(keyword_id=4, item_id=1), - dict(keyword_id=6, item_id=1), - dict(keyword_id=7, item_id=2), - dict(keyword_id=6, item_id=3), - dict(keyword_id=3, item_id=3), - dict(keyword_id=5, item_id=2), - dict(keyword_id=4, item_id=3) - ) - -db.connection().commit() - - class User(object): def __init__(self): self.user_id = None