]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
(no commit message)
authorMike Bayer <mike_mp@zzzcomputing.com>
Fri, 8 Jul 2005 02:34:53 +0000 (02:34 +0000)
committerMike Bayer <mike_mp@zzzcomputing.com>
Fri, 8 Jul 2005 02:34:53 +0000 (02:34 +0000)
lib/sqlalchemy/mapper.py [new file with mode: 0644]
test/query.py

diff --git a/lib/sqlalchemy/mapper.py b/lib/sqlalchemy/mapper.py
new file mode 100644 (file)
index 0000000..252bac9
--- /dev/null
@@ -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
index 68087b6156d2040c193cb2ece6c797bd9c9a94dd..af01d3191fbca84735d06a8cfb05c77b68f62900 100644 (file)
@@ -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():