Source code for lib_openmolar.common.db_orm.insertable_record

#! /usr/bin/env python
# -*- coding: utf-8 -*-

###############################################################################
##                                                                           ##
##  Copyright 2010, Neil Wallace <rowinggolfer@googlemail.com>               ##
##                                                                           ##
##  This program is free software: you can redistribute it and/or modify     ##
##  it under the terms of the GNU General Public License as published by     ##
##  the Free Software Foundation, either version 3 of the License, or        ##
##  (at your option) any later version.                                      ##
##                                                                           ##
##  This program is distributed in the hope that it will be useful,          ##
##  but WITHOUT ANY WARRANTY; without even the implied warranty of           ##
##  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the            ##
##  GNU General Public License for more details.                             ##
##                                                                           ##
##  You should have received a copy of the GNU General Public License        ##
##  along with this program.  If not, see <http://www.gnu.org/licenses/>.    ##
##                                                                           ##
###############################################################################

from PyQt4 import QtSql

[docs]class InsertableRecord(QtSql.QSqlRecord): ''' Inherits from QtSql.QSqlRecord and adds a property insert query ''' #: include_ix = False
[docs] def __init__(self, database, tablename): self.tablename = tablename record = database.record(tablename) QtSql.QSqlRecord.__init__(self, record)
@property
[docs] def insert_query(self): cols, vals = u"", u"" values = [] for i in range(self.count()): field = self.field(i) if not self.include_ix and field.name() == "ix": continue cols += u"%s, "% field.name() vals += "?, " values.append(field.value()) cols = cols.rstrip(", ") vals = vals.rstrip(", ") sql = 'INSERT INTO %s (%s) VALUES (%s)'% (self.tablename, cols, vals) return (sql, values)
if __name__ == "__main__": pass