Thread: [SQL-CVS] r1261 - in home/phd/SQLObject/paramstyles/sqlobject: . tests
SQLObject is a Python ORM.
Brought to you by:
ianbicking,
phd
From: <sub...@co...> - 2005-11-14 18:24:45
|
Author: phd Date: 2005-11-14 18:24:35 +0000 (Mon, 14 Nov 2005) New Revision: 1261 Added: home/phd/SQLObject/paramstyles/sqlobject/tests/test_sqllist.py Modified: home/phd/SQLObject/paramstyles/sqlobject/sqlbuilder.py Log: Started to add __sqllist__() method; added two simple tests. Modified: home/phd/SQLObject/paramstyles/sqlobject/sqlbuilder.py =================================================================== --- home/phd/SQLObject/paramstyles/sqlobject/sqlbuilder.py 2005-11-14 16:31:08 UTC (rev 1260) +++ home/phd/SQLObject/paramstyles/sqlobject/sqlbuilder.py 2005-11-14 18:24:35 UTC (rev 1261) @@ -89,6 +89,31 @@ return expr ######################################## +## SQL Query lists +######################################## + +class SQLList(object): + def __init__(self, query_list): + self.query_list = query_list + + def __sqlrepr__(self, db): + repr_list = [sqlrepr(part, db) for part in self.query_list] + return ''.join(repr_list) + + def __sqllist__(self): + return self.query_list + +class SQLListMixin(object): + def __sqllist__(self): + return self.__sqlrepr__(None) + +def sqllist(obj): + if isinstance(obj, types.StringTypes): + return [obj] + else: + return obj.__sqllist__() + +######################################## ## Expression generation ######################################## @@ -231,6 +256,8 @@ self.expr2 = expr2 def __sqlrepr__(self, db): return "(%s %s %s)" % (sqlrepr(self.expr1, db), self.op, sqlrepr(self.expr2, db)) + def __sqllist__(self): + return ["("] + sqllist(self.expr1) + [self.op] + sqllist(self.expr2) + [")"] def components(self): return [self.expr1, self.expr2] def execute(self, executor): @@ -263,6 +290,8 @@ self.args = args def __sqlrepr__(self, db): return "%s%s" % (sqlrepr(self.expr, db), sqlrepr(self.args, db)) + def __sqllist__(self): + return sqllist(self.expr) + sqllist(self.args) def components(self): return [self.expr] + list(self.args) def execute(self, executor): @@ -276,6 +305,8 @@ self.expr = expr def __sqlrepr__(self, db): return "%s %s" % (self.prefix, sqlrepr(self.expr, db)) + def __sqllist__(self): + return sqllist(self.prefix) + [' '] + sqllist(self.expr, db) def components(self): return [self.expr] def execute(self, executor): @@ -294,12 +325,14 @@ self.const = const def __sqlrepr__(self, db): return self.const + def __sqllist__(self): + return sqllist(self.const) def execute(self, executor): raise ValueError, "I don't yet know how to execute SQL constants" registerConverter(SQLConstant, SQLExprConverter) -class SQLTrueClauseClass(SQLExpression): +class SQLTrueClauseClass(SQLExpression, SQLListMixin): def __sqlrepr__(self, db): return "1 = 1" def execute(self, executor): @@ -313,7 +346,7 @@ ## Namespaces ######################################## -class Field(SQLExpression): +class Field(SQLExpression, SQLListMixin): def __init__(self, tableName, fieldName): self.tableName = tableName self.fieldName = fieldName @@ -331,7 +364,7 @@ registerConverter(SQLObjectField, SQLExprConverter) -class Table(SQLExpression): +class Table(SQLExpression, SQLListMixin): FieldClass = Field def __init__(self, tableName): @@ -384,7 +417,7 @@ ## Table aliases ######################################## -class AliasField(Field): +class AliasField(Field, SQLListMixin): def __init__(self, tableName, fieldName, alias): Field.__init__(self, tableName, fieldName) self.alias = alias @@ -431,18 +464,6 @@ ######################################## -## SQL Query lists -######################################## - -class SQLList(object): - def __init__(self, query_list): - self.query_list = query_list - - def __sqlrepr__(self, db): - query_list = [sqlrepr(part, db) for part in self.query_list] - return ''.join(query_list) - -######################################## ## SQL Statements ######################################## Added: home/phd/SQLObject/paramstyles/sqlobject/tests/test_sqllist.py =================================================================== --- home/phd/SQLObject/paramstyles/sqlobject/tests/test_sqllist.py 2005-11-14 16:31:08 UTC (rev 1260) +++ home/phd/SQLObject/paramstyles/sqlobject/tests/test_sqllist.py 2005-11-14 18:24:35 UTC (rev 1261) @@ -0,0 +1,7 @@ +from sqlobject.sqlbuilder import * + +def test_simple_string(): + assert sqllist('') == [''] + +def test_sql_op(): + assert sqllist(SQLOp('+', '1', '2')) == ['(', '1', '+', '2', ')'] |