def insert(self,*args,**kw):
        """Insert a record in the database
        Parameters can be positional or keyword arguments. If positional
        they must be in the same order as in the create() method
        If some of the fields are missing the value is set to None
        Returns the record identifier
        """
        if args:
            kw = dict([(f,arg) for f,arg in zip(self.fields,args)])

        ks = kw.keys()
        s1 = ",".join(ks)
        qm = ','.join(['?']*len(ks))
        sql = "INSERT INTO %s (%s) VALUES (%s)" %(self.name,s1,qm)
        self.cursor.execute(sql,kw.values())
        # return last row id
        return self.cursor.lastrowid