def test(self): for country_name, cities in self.data: new_country = country(name=country_name) self.ds.insert(new_country) for city_name in cities: new_country.cities.append(city(name=city_name)) new_country.cities.append(city(name="Bremen")) # But Bremen is not an English town, is it? result = self.ds.select( city, sql.where("name=", sql.string_literal("Bremen"))) bremen = result.next() result = self.ds.select( country, sql.where("name=", sql.string_literal("Germany"))) germany = result.next() # this will update the foreign key in the city table bremen.country_id = germany.id self.ds.flush_updates() german_cities = germany.cities.select(sql.order_by("name")) names = map(lambda c: c.name, list(german_cities)) self.assertEqual( names, [u"Berlin", u"Bremen", u"Hamburg", u"München", u"Witten"]) bremen_where = sql.where("name='Bremen'") self.assertEqual(len(germany.cities), 5) self.assertEqual(germany.cities.len(bremen_where), 1) bremen = germany.cities.select(bremen_where).next() self.assertEqual(bremen.name, u"Bremen")
def test(self): for country_name, cities in self.data: new_country = country(name=country_name) self.ds.insert(new_country) for city_name in cities: new_country.cities.append(city(name=city_name)) new_country.cities.append(city(name="Bremen")) # But Bremen is not an English town, is it? result = self.ds.select(city, sql.where("name=", sql.string_literal("Bremen"))) bremen = result.next() result = self.ds.select(country, sql.where("name=", sql.string_literal("Germany"))) germany = result.next() # this will update the foreign key in the city table bremen.country_id = germany.id self.ds.commit(bremen, germany) german_cities = germany.cities.select(sql.order_by("name")) names = map(lambda c: c.name, list(german_cities)) self.assertEqual(names, [u"Berlin", u"Bremen", u"Hamburg", u"München", u"Witten"]) bremen_where = sql.where("name='Bremen'") self.assertEqual(len(germany.cities), 5) self.assertEqual(germany.cities.len(bremen_where), 1) bremen = germany.cities.select(bremen_where).next() self.assertEqual(bremen.name, u"Bremen")
def sql_literal(self, dbobj): if not self.isset(dbobj): msg = "This attribute has not been retrieved from the database." raise AttributeError(msg) else: value = getattr(dbobj, self.data_attribute_name()) if value is None: return sql.NULL else: return sql.string_literal(self.datetime_as_string(value))
def sql_literal(self, dbobj): """ This function takes care of converting the Python object into a serialized string representation. """ if not self.isset(dbobj): msg = "This attribute has not been retrieved from the database." raise AttributeError(msg) else: value = getattr(dbobj, self.data_attribute_name()) if value is None: return sql.NULL else: pickled = dumps(value, self.pickle_protocol) return sql.string_literal(pickled)