def build_json_path(builder, path): path_sql, has_params, has_wildcards = SQLBuilder.build_json_path( builder, path) if has_params: throw(TranslationError, "Oracle doesn't allow parameters in JSON paths") return path_sql, has_params, has_wildcards
def test_pyformat(self): self.provider.paramstyle = 'pyformat' b = SQLBuilder(self.provider, self.ast) self.assertEqual(b.sql, 'SELECT "A"\n' 'FROM "T1"\n' 'WHERE "B" = %(p1)s\n AND "C" = %(p2)s\n AND "D" = %(p2)s\n AND "E" = %(p1)s') self.assertEqual(b.layout, (self.key1, self.key2))
def test_named(self): self.provider.paramstyle = 'named' b = SQLBuilder(self.provider, self.ast) self.assertEqual(b.sql, 'SELECT "A"\n' 'FROM "T1"\n' 'WHERE "B" = :p1\n AND "C" = :p2\n AND "D" = :p2\n AND "E" = :p1') self.assertEqual(b.layout, (self.key1, self.key2))
def test_qmark(self): self.provider.paramstyle = 'qmark' b = SQLBuilder(self.provider, self.ast) self.assertEqual(b.sql, 'SELECT "A"\n' 'FROM "T1"\n' 'WHERE "B" = ?\n AND "C" = ?\n AND "D" = ?\n AND "E" = ?') self.assertEqual(b.layout, (self.key1, self.key2, self.key2, self.key1))
def test_numeric(self): self.provider.paramstyle = 'numeric' b = SQLBuilder(self.provider, self.ast) self.assertEqual(b.sql, 'SELECT "A"\n' 'FROM "T1"\n' 'WHERE "B" = :1\n AND "C" = :2\n AND "D" = :2\n AND "E" = :1') self.assertEqual(b.layout, [self.key1, self.key2, self.key2, self.key1])
def INSERT(builder, table_name, columns, values, returning=None): if not values: result = [ 'INSERT INTO ', builder.quote_name(table_name), ' DEFAULT VALUES' ] else: result = SQLBuilder.INSERT(builder, table_name, columns, values) if returning is not None: result.extend([' RETURNING ', builder.quote_name(returning)]) return result
def INSERT(builder, table_name, columns, values, returning=None): if not values: return 'INSERT INTO %s DEFAULT VALUES' % builder.quote_name( table_name) return SQLBuilder.INSERT(builder, table_name, columns, values, returning)
def __init__(builder, provider, ast): builder.json1_available = provider.json1_available SQLBuilder.__init__(builder, provider, ast)
def INSERT(builder, table_name, columns, values, returning=None): result = SQLBuilder.INSERT(builder, table_name, columns, values) if returning is not None: result.extend((' RETURNING ', builder.quote_name(returning), ' INTO :new_id')) return result