From: Mike Bayer Date: Fri, 8 Jul 2005 02:34:53 +0000 (+0000) Subject: (no commit message) X-Git-Tag: rel_0_1_0~894 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1efb132388f3b59197c9b622087a72bc0d2fde3f;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git --- diff --git a/lib/sqlalchemy/mapper.py b/lib/sqlalchemy/mapper.py new file mode 100644 index 0000000000..252bac984d --- /dev/null +++ b/lib/sqlalchemy/mapper.py @@ -0,0 +1,66 @@ +""" +# create a mapper from a class and table object +usermapper = Mapper(User, users) + + +# get primary key +usermapper.get(10) + +userlist = usermapper.select(usermapper.table.user_id == 10) + +userlist = usermapper.select( + and_(usermapper.table.user_name == 'fred', usermapper.table.user_id == 12) + ) + +userlist = usermapper.select("user_id =12 and foo=bar", from_obj=["foo"]) + +usermapper = Mapper( + User, + users, + properties = { + 'addresses' : Relation(addressmapper, lazy = False), + 'permissions' : Relation(permissions, + + # one or the other + associationtable = userpermissions, + criterion = and_(users.user_id == userpermissions.user_id, userpermissions.permission_id=permissions.permission_id), + lazy = True), + '*' : [users, userinfo] + }, + ) + +addressmapper = Mapper(Address, addresses, properties = { + 'street': addresses.address_1, + '*' : addresses +}) +""" + +import sqlalchemy.sql as sql +import sqlalchemy.schema as schema + +class Mapper: + def __init__(self, class_, table, properties): + self.class_ = class_ + self.table = table + self.properties = properties + + def instance(self, row): + pass + + def select_whereclause(self, whereclause, **params): + pass + + def select_statement(self, statement, **params): + pass + + def select(self, arg, **params): + if isinstance(arg, sql.Select): + return self.select_statement(arg, **params) + else: + return self.select_whereclause(arg, **params) + + def save(self, object): + pass + + def delete(self, whereclause = None, **params): + pass \ No newline at end of file diff --git a/test/query.py b/test/query.py index 68087b6156..af01d3191f 100644 --- a/test/query.py +++ b/test/query.py @@ -31,6 +31,17 @@ class QueryTest(PersistTest): self.users.update(self.users.c.user_id == 7).execute(user_name = 'fred') print repr(self.users.select().execute().fetchall()) + + def testdelete(self): + c = db.connection() + + self.users.insert().execute(user_id = 7, user_name = 'jack') + self.users.insert().execute(user_id = 8, user_name = 'fred') + print repr(self.users.select().execute().fetchall()) + + self.users.delete(self.users.c.user_name == 'fred').execute() + + print repr(self.users.select().execute().fetchall()) def testtransaction(self): def dostuff():