Write a sqlbuilder in Python. Java Edition can be seen from http://www.java2s.com/Code/Java/Database-SQL-JDBC/SQLBuilder.htm.
Attached code:
Demo sample Code (a):
Class Sqldirector: @classmethod def buildsql (CLS, builder): sql = "" SQL + = Builder.getcommand () SQL + = Builder . getTable () SQL + = Builder.getwhat () SQL + = Builder.getcriteria () return sqlclass sqlbuilder:def __init__ (self) : Pass def __del__ (self): Pass def GetCommand (self): Pass def getTable (self): Pass def getwhat (self): Pass def GETCRI Teria (self): Passclass Insertbuilder (sqlbuilder): def __init__ (self): self._table = "" Self._columnsanddata = Dict ( ) Self._criteria = "" Def settable (self, table): self._table = Table def getcommand (self): return "INSERT into "Def getTable (self): return self._table def getwhat (self): columns = list () values = List () what =" "fo R columnName in Self._columnsanddata:columns.append (columnName) values.append (Self._columnsanddata[columnname]) COLUMNS_STR = String.Join (Map (lambda x:str (x), columns), ",") Values_str = String.Join (Map (lambda x:str (x), VA lues), ",") What + ="What + = columns_str what + +") VALUES ("What + = values_str what + +") "Return What Def Getcriteria ( Self): Return "" Def addcolumnanddata (self, ColumnName, value): if value:self._columnsanddata[columnname] = V Aluedef Main (): Builder = Insertbuilder () builder.settable ("Employees") Builder.addcolumnanddata ("employee_id", Int ( 221)) Builder.addcolumnanddata ("First_Name", "' Shane '") builder.addcolumnanddata ("Last_Name", "' Grinnell '") Builder.addcolumnanddata ("email", "' [email protected] '") sql = Sqldirector.buildsql (builder) Print Sqlif __name_ _ = = ' __main__ ': Main ()
More fun to play.
Sample code Demo (ii):
#!/usr/bin/env pythonimport stringclass sqldirector:def __init__ (self, builder): Self._builder = Builder def constru CT (self): Self._builder.buildsql () return Self._builder.getsql () class Sqlbuilder:def __init__ (self): Self._sql = ' ' Def buildsql (self): return self def getsql (self): return self._sqlclass Insertbuilder (sqlbuilder): def __init__ (self) : Self._columns = list () Self._values = List () def buildsql (self): Columns_str = String.Join (Map (lambda x: "'%s '% str (x), Self._columns), ",") Values_str = String.Join (Map (lambda x: "'%s '"% str (x), self._values), ",") se Lf._sql = "INSERT into" self._sql + = self._table Self._sql + = "(%s) VALUES (%s)"% (Columns_str, VALUES_STR) Return Self def table (self, table): self._table = table return self def column (self, ColumnName, value): Self._ Columns.Append (columnName) self._values.append (value) return Selfdef main (): Insertbuilder = Insertbuilder () inser Tbuilder.table ("Dt_proceSS "). Column (" Attr_key "," foo "). Column (" Attr_val "," bar ") Sqldirector = Sqldirector (insertbuilder) print sqldirector. Construct () if __name__ = = "__main__": Main ()
Demo sample Code (c):
#!/usr/bin/env pythonimport stringdef Main (): Insertbuilder = Insertbuilder () insertbuilder.table ("Dt_process"). Col Umn ("Attr_key", "foo"). Column ("Attr_val", "bar") Sqldirector = Sqldirector (insertbuilder) Print sqldirector.construct () Createbuilder = Createbuilder () createbuilder.table ("NewTable"). Ifnotexists (). Column ("id"). Col_type ("INTEGER"). Col_autoincrement (). Column ("name"). Col_type ("VARCHAR"). Col_nullable (False). Col_default ("Empty") sqldirector = Sqldirector (createbuilder) print sqldirector.construct () #------------------------------------------------------ -----------------------# libraries#----------------------------------------------------------------------------- Class Sqldirector:def __init__ (self, builder): Self._builder = Builder def construct (self): SELF._BUILDER.BUILDSQ L () return Self._builder.getsql () class Sqlbuilder:def __init__ (self): Self._sql = "def buildsql (self): return to self def getsql (self): return Self._sqlclass CreatebUilder (Sqlbuilder): def __init__ (self): Self._columns = List () # item:dict = ' name ', ' Nullable ', ' Default ' SE Lf._column_context = None self._table = "" Self._ifnotexists = "" Self._criteria = "def _map_column (self, Colu MN): sql = "" If Column.has_key (' name '): SQL + = "'%s '"%column[' name '] if Column.has_key (' type '): SQL + = "%s"%co lumn[' type '] if Column.has_key (' Nullable '): SQL + = "%s"%column[' nullable '] if Column.has_key (' Default '): SQL + = "%s" %column[' default '] if Column.has_key (' auto_increment '): SQL + = "%s"%column[' auto_increment '] return SQL Def _reduce _column (self, left, right): return left + "," + Right def BuildSQL (self): Columns_str = reduce (self._reduce_column , Map (Self._map_column, self._columns)) Self._sql = "CREATE TABLE" self._sql + = self._ifnotexists Self._sql + = self._table Self._sql + = "(%s)"% columns_str return self def ifnotexists (self): self._ifnotexists = "IF not EXISTS "return self def table (self, table): self._table = table return self-def column (self, columnName): column = Dict () colum n[' name '] = columnName self._columns.append (column) self._column_context = column return self def col_type (self, Type): self._column_context[' type '] = type return self-def col_nullable (self, nullable=true): If nullable: self._column_context[' nullable ' = "" else:self._column_context[' nullable '] = "not NULL" return to self DEF Co L_default (self, default): self._column_context[' default '] = "Default%s"% default return self def col_autoincreme NT (self, autoincrement=true): self._column_context[' auto_increment '] = "auto_increment" return self def primary (SE LF, Primary=true): Self._primary_key.append (self._column_context[' name ') return self## INSERT into#class Insertbuil Der (Sqlbuilder): def __init__ (self): Self._columns = List () Self._values = List () self._table = "Def buildsql (self): Columns_str = String.Join (Map (lambda x: "'%s '"% str (x), Self._columns), ",") Values_str = String.Join (Map (lambda x: "'%s '"% St R (x), self._values), ",") Self._sql = "INSERT into" self._sql + = self._table Self._sql + = "(%s) values (%s)" % (Columns_str, values_str) return self def table (self, table): self._table = table return self def column (sel F, ColumnName, value): Self._columns.append (columnName) self._values.append (value) return selfif __name__ = "__m Ain__ ": Main ()
[Python] Sqlbuilder Demo Sample Code