def test_bad_values(self): foo = Foo.new() foo["i1"] = "xyz" try: sqlgen.insert(Foo, foo, sqlgen.DIALECT_SQLITE, "?") except TypeError, e: self.assertEquals("IntCol 'i1': int expected, got str", str(e))
def test_auto_id(self): foo = Foo.new(foo_id=None, i1=25, s1="xyz") sql, values, auto_id_used = sqlgen.insert(Foo, foo, sqlgen.DIALECT_SQLITE, "?") self.assertEquals("INSERT INTO foo (i1,s1,d1) VALUES (?,?,NULL)", sql) self.assertEquals([25, "xyz"], values) sql, values, auto_id_used = sqlgen.insert(Foo, foo, sqlgen.DIALECT_POSTGRES, "?") self.assertEquals("INSERT INTO foo (i1,s1,d1) VALUES (?,?,NULL) RETURNING foo_id", sql) self.assertEquals([25, "xyz"], values) self.assert_(auto_id_used)
def test_no_auto_id_col(self): bar = Bar.new( bi=5, bs="abc", bd=datetime.date(2006, 3, 21), bdt1=datetime.datetime(2006, 4, 13, 23, 58, 14), bb=True ) sql, values, auto_id_used = sqlgen.insert(Bar, bar, sqlgen.DIALECT_POSTGRES, "%s") self.assertEquals("INSERT INTO bar (bi,bs,bd,bdt1,bb) VALUES (%s,%s,%s,%s,%s)", sql) self.assertEquals([5, u"abc", "2006-03-21", "2006-04-13T23:58:14Z", 1], values) self.assertFalse(auto_id_used)
def insert(self, table, row): # read only check self._check_write_ok() # gen sql sql, values, auto_id_used = \ sqlgen.insert(table, row, self.dialect, self.paramstr) # execute sql cursor = self._execute(sql, values) assert cursor.rowcount == 1, \ "insert(): expected rowcount=1, got %s" % cursor.rowcount # replace AutoIdCol None with actual id if auto_id_used: if self.dialect == DIALECT_POSTGRES: new_id = cursor.fetchone()[0] else: new_id = cursor.lastrowid row[table.auto_id_col.col_name] = new_id
def test_auto_id_used(self): foo = Foo.new(foo_id=12, i1=101, s1="xyz", d1=None) sql, values, auto_id_used = sqlgen.insert(Foo, foo, sqlgen.DIALECT_MYSQL, "%s") self.assertEquals("INSERT INTO foo (foo_id,i1,s1,d1) VALUES (%s,%s,%s,NULL)", sql) self.assertEquals([12, 101, "xyz"], values) self.assertFalse(auto_id_used)
def test(self): foo = Foo.new(foo_id=4, i1=23, s1="pqr", d1=datetime.date(2006, 5, 4)) sql, values, auto_id_used = sqlgen.insert(Foo, foo, sqlgen.DIALECT_SQLITE, "?") self.assertEquals("INSERT INTO foo (foo_id,i1,s1,d1) VALUES (?,?,?,?)", sql) self.assertEquals([4, 23, u"pqr", "2006-05-04"], values) self.assertFalse(auto_id_used)