def test_two_columns(self): sql, column_names = sql_builder.build_values_clause( columns=['col_a', 'col_b'], bind_vars=dict(col_a=1, col_b=2)) self.assertEqual(sql, '%(col_a)s, %(col_b)s') self.assertEqual(column_names, ['col_a', 'col_b']) sql, column_names = sql_builder.build_values_clause( columns=['col_a', 'col_b'], bind_vars=dict(col_a=1)) self.assertEqual(sql, '%(col_a)s') self.assertEqual(column_names, ['col_a'])
def test_two_columns(self): sql, column_names = sql_builder.build_values_clause( columns=["col_a", "col_b"], bind_vars=dict(col_a=1, col_b=2) ) self.assertEqual(sql, "%(col_a)s, %(col_b)s") self.assertEqual(column_names, ["col_a", "col_b"]) sql, column_names = sql_builder.build_values_clause(columns=["col_a", "col_b"], bind_vars=dict(col_a=1)) self.assertEqual(sql, "%(col_a)s") self.assertEqual(column_names, ["col_a"])
def test_with_insert_value_expr(self): timestamp = sql_builder.RawInsertValueExpr("FROM_UNIXTIME(%(col_b_1)s)", col_b_1=1234567890) bind_vars = dict(col_a=1, col_b=timestamp) sql, column_names = sql_builder.build_values_clause(columns=["col_a", "col_b"], bind_vars=bind_vars) self.assertEqual(sql, "%(col_a)s, %(col_b)s") self.assertEqual(column_names, ["col_a", "col_b"]) self.assertEqual(sorted(bind_vars), ["col_a", "col_b", "col_b_1"]) self.assertEqual(bind_vars["col_a"], 1) self.assertEqual(bind_vars["col_b_1"], 1234567890)
def test_with_insert_expr(self): timestamp = sql_builder.RawSQLInsertExpr('FROM_UNIXTIME(%(col_b_1)s)', col_b_1=1234567890) bind_vars = dict(col_a=1, col_b=timestamp) sql, column_names = sql_builder.build_values_clause( columns=['col_a', 'col_b'], bind_vars=bind_vars) self.assertEqual(sql, '%(col_a)s, %(col_b)s') self.assertEqual(column_names, ['col_a', 'col_b']) self.assertEqual(sorted(bind_vars), ['col_a', 'col_b', 'col_b_1']) self.assertEqual(bind_vars['col_a'], 1) self.assertEqual(bind_vars['col_b_1'], 1234567890)
def test_with_insert_expr(self): timestamp = sql_builder.RawSQLInsertExpr( 'FROM_UNIXTIME(%(col_b_1)s)', col_b_1=1234567890) bind_vars = dict(col_a=1, col_b=timestamp) sql, column_names = sql_builder.build_values_clause( columns=['col_a', 'col_b'], bind_vars=bind_vars) self.assertEqual(sql, '%(col_a)s, %(col_b)s') self.assertEqual(column_names, ['col_a', 'col_b']) self.assertEqual(sorted(bind_vars), ['col_a', 'col_b', 'col_b_1']) self.assertEqual(bind_vars['col_a'], 1) self.assertEqual(bind_vars['col_b_1'], 1234567890)
def test_with_time_created_and_time_updated(self): """Check time_created and time_updated are added as needed.""" bind_vars = dict(time_created=1, col_b=2) sql, column_names = sql_builder.build_values_clause(columns=["time_created", "col_b"], bind_vars=bind_vars) self.assertEqual(sql, "%(time_created)s, %(col_b)s") self.assertEqual(column_names, ["time_created", "col_b"]) self.assertEqual(bind_vars["time_created"], 1) bind_vars = dict(col_b=2) sql, column_names = sql_builder.build_values_clause(columns=["time_created", "col_b"], bind_vars=bind_vars) self.assertEqual(sql, "%(time_created)s, %(col_b)s") self.assertEqual(column_names, ["time_created", "col_b"]) self.assertIn("time_created", bind_vars) bind_vars = dict() sql, column_names = sql_builder.build_values_clause( columns=["time_created", "time_updated"], bind_vars=bind_vars ) self.assertEqual(sql, "%(time_created)s, %(time_updated)s") self.assertEqual(column_names, ["time_created", "time_updated"]) self.assertIn("time_created", bind_vars) self.assertIn("time_updated", bind_vars)
def test_with_time_created_and_time_updated(self): """Check time_created and time_updated are added as needed.""" bind_vars = dict(time_created=1, col_b=2) sql, column_names = sql_builder.build_values_clause( columns=['time_created', 'col_b'], bind_vars=bind_vars) self.assertEqual(sql, '%(time_created)s, %(col_b)s') self.assertEqual(column_names, ['time_created', 'col_b']) self.assertEqual(bind_vars['time_created'], 1) bind_vars = dict(col_b=2) sql, column_names = sql_builder.build_values_clause( columns=['time_created', 'col_b'], bind_vars=bind_vars) self.assertEqual(sql, '%(time_created)s, %(col_b)s') self.assertEqual(column_names, ['time_created', 'col_b']) self.assertIn('time_created', bind_vars) bind_vars = dict() sql, column_names = sql_builder.build_values_clause( columns=['time_created', 'time_updated'], bind_vars=bind_vars) self.assertEqual(sql, '%(time_created)s, %(time_updated)s') self.assertEqual(column_names, ['time_created', 'time_updated']) self.assertIn('time_created', bind_vars) self.assertIn('time_updated', bind_vars)
def insert(class_, cursor, **bind_variables): values_clause, bind_list = sql_builder.build_values_clause( class_.columns_list, bind_variables) if class_.columns_list is None: raise dbexceptions.ProgrammingError("DB class should define columns_list") query = 'INSERT INTO %s (%s) VALUES (%s)' % (class_.table_name, sql_builder.colstr( class_.columns_list, bind=bind_list), values_clause) cursor.execute(query, bind_variables) return cursor.lastrowid