summaryrefslogtreecommitdiff
path: root/test/sql/test_update.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/sql/test_update.py')
-rw-r--r--test/sql/test_update.py195
1 files changed, 99 insertions, 96 deletions
diff --git a/test/sql/test_update.py b/test/sql/test_update.py
index a08d5f672..58c86613b 100644
--- a/test/sql/test_update.py
+++ b/test/sql/test_update.py
@@ -7,6 +7,7 @@ from sqlalchemy.testing.schema import Table, Column
class _UpdateFromTestBase(object):
+
@classmethod
def define_tables(cls, metadata):
Table('mytable', metadata,
@@ -74,8 +75,8 @@ class UpdateTest(_UpdateFromTestBase, fixtures.TablesTest, AssertsCompiledSQL):
self.assert_compile(
table1.update().
- where(table1.c.myid == 7).
- values({table1.c.myid: 5}),
+ where(table1.c.myid == 7).
+ values({table1.c.myid: 5}),
'UPDATE mytable SET myid=:myid WHERE mytable.myid = :myid_1',
checkparams={'myid': 5, 'myid_1': 7})
@@ -99,8 +100,8 @@ class UpdateTest(_UpdateFromTestBase, fixtures.TablesTest, AssertsCompiledSQL):
self.assert_compile(
update(table1,
- whereclause=table1.c.name == bindparam('crit'),
- values={table1.c.name: 'hi'}),
+ whereclause=table1.c.name == bindparam('crit'),
+ values={table1.c.name: 'hi'}),
'UPDATE mytable SET name=:name WHERE mytable.name = :crit',
params={'crit': 'notthere'},
checkparams={'crit': 'notthere', 'name': 'hi'})
@@ -110,8 +111,8 @@ class UpdateTest(_UpdateFromTestBase, fixtures.TablesTest, AssertsCompiledSQL):
self.assert_compile(
update(table1,
- table1.c.myid == 12,
- values={table1.c.name: table1.c.myid}),
+ table1.c.myid == 12,
+ values={table1.c.name: table1.c.myid}),
'UPDATE mytable '
'SET name=mytable.myid, description=:description '
'WHERE mytable.myid = :myid_1',
@@ -152,8 +153,8 @@ class UpdateTest(_UpdateFromTestBase, fixtures.TablesTest, AssertsCompiledSQL):
update(table1, table1.c.myid == 12, values=v1).values(v2),
'UPDATE mytable '
'SET '
- 'name=(mytable.name || :name_1), '
- 'description=:description '
+ 'name=(mytable.name || :name_1), '
+ 'description=:description '
'WHERE mytable.myid = :myid_1',
params={'description': 'test'})
@@ -164,29 +165,32 @@ class UpdateTest(_UpdateFromTestBase, fixtures.TablesTest, AssertsCompiledSQL):
table1.c.name: table1.c.name + 'lala',
table1.c.myid: func.do_stuff(table1.c.myid, literal('hoho'))
}
- self.assert_compile(update(table1,
- (table1.c.myid == func.hoho(4)) &
- (table1.c.name == literal('foo') +
- table1.c.name + literal('lala')),
- values=values),
+ self.assert_compile(
+ update(
+ table1,
+ (table1.c.myid == func.hoho(4)) & (
+ table1.c.name == literal('foo') +
+ table1.c.name +
+ literal('lala')),
+ values=values),
'UPDATE mytable '
'SET '
- 'myid=do_stuff(mytable.myid, :param_1), '
- 'name=(mytable.name || :name_1) '
+ 'myid=do_stuff(mytable.myid, :param_1), '
+ 'name=(mytable.name || :name_1) '
'WHERE '
- 'mytable.myid = hoho(:hoho_1) AND '
- 'mytable.name = :param_2 || mytable.name || :param_3')
+ 'mytable.myid = hoho(:hoho_1) AND '
+ 'mytable.name = :param_2 || mytable.name || :param_3')
def test_where_empty(self):
table1 = self.tables.mytable
self.assert_compile(
- table1.update().where(and_()),
- "UPDATE mytable SET myid=:myid, name=:name, description=:description"
- )
+ table1.update().where(
+ and_()),
+ "UPDATE mytable SET myid=:myid, name=:name, description=:description")
self.assert_compile(
- table1.update().where(or_()),
- "UPDATE mytable SET myid=:myid, name=:name, description=:description"
- )
+ table1.update().where(
+ or_()),
+ "UPDATE mytable SET myid=:myid, name=:name, description=:description")
def test_prefix_with(self):
table1 = self.tables.mytable
@@ -196,14 +200,14 @@ class UpdateTest(_UpdateFromTestBase, fixtures.TablesTest, AssertsCompiledSQL):
prefix_with('C', 'D')
self.assert_compile(stmt,
- 'UPDATE C D mytable SET myid=:myid, name=:name, '
- 'description=:description')
+ 'UPDATE C D mytable SET myid=:myid, name=:name, '
+ 'description=:description')
- self.assert_compile(stmt,
+ self.assert_compile(
+ stmt,
'UPDATE A B C D mytable SET myid=%s, name=%s, description=%s',
dialect=mysql.dialect())
-
def test_update_to_expression(self):
"""test update from an expression.
@@ -216,7 +220,7 @@ class UpdateTest(_UpdateFromTestBase, fixtures.TablesTest, AssertsCompiledSQL):
expr = func.foo(table1.c.myid)
eq_(expr.key, None)
self.assert_compile(table1.update().values({expr: 'bar'}),
- 'UPDATE mytable SET foo(myid)=:param_1')
+ 'UPDATE mytable SET foo(myid)=:param_1')
def test_update_bound_ordering(self):
"""test that bound parameters between the UPDATE and FROM clauses
@@ -227,8 +231,8 @@ class UpdateTest(_UpdateFromTestBase, fixtures.TablesTest, AssertsCompiledSQL):
table2 = self.tables.myothertable
sel = select([table2]).where(table2.c.otherid == 5).alias()
upd = table1.update().\
- where(table1.c.name == sel.c.othername).\
- values(name='foo')
+ where(table1.c.name == sel.c.othername).\
+ values(name='foo')
dialect = default.DefaultDialect()
dialect.positional = True
@@ -256,7 +260,6 @@ class UpdateTest(_UpdateFromTestBase, fixtures.TablesTest, AssertsCompiledSQL):
)
-
class UpdateFromCompileTest(_UpdateFromTestBase, fixtures.TablesTest,
AssertsCompiledSQL):
__dialect__ = 'default'
@@ -272,7 +275,7 @@ class UpdateFromCompileTest(_UpdateFromTestBase, fixtures.TablesTest,
# in values. The behavior here isn't really defined
self.assert_compile(
update(talias1, talias1.c.myid == 7).
- values({table1.c.name: "fred"}),
+ values({table1.c.name: "fred"}),
'UPDATE mytable AS t1 '
'SET name=:name '
'WHERE t1.myid = :myid_1')
@@ -287,13 +290,13 @@ class UpdateFromCompileTest(_UpdateFromTestBase, fixtures.TablesTest,
# as an "extra table", hence we see the full table name rendered.
self.assert_compile(
update(talias1, table1.c.myid == 7).
- values({table1.c.name: 'fred'}),
+ values({table1.c.name: 'fred'}),
'UPDATE mytable AS t1 '
'SET name=:mytable_name '
'FROM mytable '
'WHERE mytable.myid = :myid_1',
checkparams={'mytable_name': 'fred', 'myid_1': 7},
- )
+ )
def test_alias_two_mysql(self):
table1 = self.tables.mytable
@@ -301,7 +304,7 @@ class UpdateFromCompileTest(_UpdateFromTestBase, fixtures.TablesTest,
self.assert_compile(
update(talias1, table1.c.myid == 7).
- values({table1.c.name: 'fred'}),
+ values({table1.c.name: 'fred'}),
"UPDATE mytable AS t1, mytable SET mytable.name=%s "
"WHERE mytable.myid = %s",
checkparams={'mytable_name': 'fred', 'myid_1': 7},
@@ -312,11 +315,11 @@ class UpdateFromCompileTest(_UpdateFromTestBase, fixtures.TablesTest,
self.assert_compile(
users.update().
- values(name='newname').\
- values({addresses.c.name: "new address"}).\
- where(users.c.id == addresses.c.user_id),
+ values(name='newname').
+ values({addresses.c.name: "new address"}).
+ where(users.c.id == addresses.c.user_id),
"UPDATE users, addresses SET addresses.name=%s, "
- "users.name=%s WHERE users.id = addresses.user_id",
+ "users.name=%s WHERE users.id = addresses.user_id",
checkparams={'addresses_name': 'new address', 'name': 'newname'},
dialect='mysql'
)
@@ -326,14 +329,14 @@ class UpdateFromCompileTest(_UpdateFromTestBase, fixtures.TablesTest,
self.assert_compile(
users.update().
- values(name='newname').
- where(users.c.id == addresses.c.user_id).
- where(addresses.c.email_address == 'e1'),
+ values(name='newname').
+ where(users.c.id == addresses.c.user_id).
+ where(addresses.c.email_address == 'e1'),
'UPDATE users '
'SET name=:name FROM addresses '
'WHERE '
- 'users.id = addresses.user_id AND '
- 'addresses.email_address = :email_address_1',
+ 'users.id = addresses.user_id AND '
+ 'addresses.email_address = :email_address_1',
checkparams={'email_address_1': 'e1', 'name': 'newname'})
def test_render_multi_table(self):
@@ -349,19 +352,19 @@ class UpdateFromCompileTest(_UpdateFromTestBase, fixtures.TablesTest,
self.assert_compile(
users.update().
- values(name='newname').
- where(users.c.id == addresses.c.user_id).
- where(addresses.c.email_address == 'e1').
- where(addresses.c.id == dingalings.c.address_id).
- where(dingalings.c.id == 2),
+ values(name='newname').
+ where(users.c.id == addresses.c.user_id).
+ where(addresses.c.email_address == 'e1').
+ where(addresses.c.id == dingalings.c.address_id).
+ where(dingalings.c.id == 2),
'UPDATE users '
'SET name=:name '
'FROM addresses, dingalings '
'WHERE '
- 'users.id = addresses.user_id AND '
- 'addresses.email_address = :email_address_1 AND '
- 'addresses.id = dingalings.address_id AND '
- 'dingalings.id = :id_1',
+ 'users.id = addresses.user_id AND '
+ 'addresses.email_address = :email_address_1 AND '
+ 'addresses.id = dingalings.address_id AND '
+ 'dingalings.id = :id_1',
checkparams=checkparams)
def test_render_table_mysql(self):
@@ -369,14 +372,14 @@ class UpdateFromCompileTest(_UpdateFromTestBase, fixtures.TablesTest,
self.assert_compile(
users.update().
- values(name='newname').
- where(users.c.id == addresses.c.user_id).
- where(addresses.c.email_address == 'e1'),
+ values(name='newname').
+ where(users.c.id == addresses.c.user_id).
+ where(addresses.c.email_address == 'e1'),
'UPDATE users, addresses '
'SET users.name=%s '
'WHERE '
- 'users.id = addresses.user_id AND '
- 'addresses.email_address = %s',
+ 'users.id = addresses.user_id AND '
+ 'addresses.email_address = %s',
checkparams={'email_address_1': 'e1', 'name': 'newname'},
dialect=mysql.dialect())
@@ -398,17 +401,17 @@ class UpdateFromCompileTest(_UpdateFromTestBase, fixtures.TablesTest,
subq = select(cols).where(addresses.c.id == 7).alias()
self.assert_compile(
users.update().
- values(name='newname').
- where(users.c.id == subq.c.user_id).
- where(subq.c.email_address == 'e1'),
+ values(name='newname').
+ where(users.c.id == subq.c.user_id).
+ where(subq.c.email_address == 'e1'),
'UPDATE users '
'SET name=:name FROM ('
- 'SELECT '
- 'addresses.id AS id, '
- 'addresses.user_id AS user_id, '
- 'addresses.email_address AS email_address '
- 'FROM addresses '
- 'WHERE addresses.id = :id_1'
+ 'SELECT '
+ 'addresses.id AS id, '
+ 'addresses.user_id AS user_id, '
+ 'addresses.email_address AS email_address '
+ 'FROM addresses '
+ 'WHERE addresses.id = :id_1'
') AS anon_1 '
'WHERE users.id = anon_1.user_id '
'AND anon_1.email_address = :email_address_1',
@@ -424,9 +427,9 @@ class UpdateFromRoundTripTest(_UpdateFromTestBase, fixtures.TablesTest):
testing.db.execute(
addresses.update().
- values(email_address=users.c.name).
- where(users.c.id == addresses.c.user_id).
- where(users.c.name == 'ed'))
+ values(email_address=users.c.name).
+ where(users.c.id == addresses.c.user_id).
+ where(users.c.name == 'ed'))
expected = [
(1, 7, 'x', 'jack@bean.com'),
@@ -443,10 +446,10 @@ class UpdateFromRoundTripTest(_UpdateFromTestBase, fixtures.TablesTest):
a1 = addresses.alias()
testing.db.execute(
addresses.update().
- values(email_address=users.c.name).
- where(users.c.id == a1.c.user_id).
- where(users.c.name == 'ed').
- where(a1.c.id == addresses.c.id)
+ values(email_address=users.c.name).
+ where(users.c.id == a1.c.user_id).
+ where(users.c.name == 'ed').
+ where(a1.c.id == addresses.c.id)
)
expected = [
@@ -465,11 +468,11 @@ class UpdateFromRoundTripTest(_UpdateFromTestBase, fixtures.TablesTest):
testing.db.execute(
addresses.update().
- values(email_address=users.c.name).
- where(users.c.id == addresses.c.user_id).
- where(users.c.name == 'ed').
- where(addresses.c.id == dingalings.c.address_id).
- where(dingalings.c.id == 1))
+ values(email_address=users.c.name).
+ where(users.c.id == addresses.c.user_id).
+ where(users.c.name == 'ed').
+ where(addresses.c.id == dingalings.c.address_id).
+ where(dingalings.c.id == 1))
expected = [
(1, 7, 'x', 'jack@bean.com'),
@@ -490,9 +493,9 @@ class UpdateFromRoundTripTest(_UpdateFromTestBase, fixtures.TablesTest):
testing.db.execute(
addresses.update().
- values(values).
- where(users.c.id == addresses.c.user_id).
- where(users.c.name == 'ed'))
+ values(values).
+ where(users.c.id == addresses.c.user_id).
+ where(users.c.name == 'ed'))
expected = [
(1, 7, 'x', 'jack@bean.com'),
@@ -520,9 +523,9 @@ class UpdateFromRoundTripTest(_UpdateFromTestBase, fixtures.TablesTest):
testing.db.execute(
addresses.update().
- values(values).
- where(users.c.id == addresses.c.user_id).
- where(users.c.name == 'ed'))
+ values(values).
+ where(users.c.id == addresses.c.user_id).
+ where(users.c.name == 'ed'))
expected = [
(1, 7, 'x', 'jack@bean.com'),
@@ -565,7 +568,7 @@ class UpdateFromMultiTableUpdateDefaultsTest(_UpdateFromTestBase,
test_needs_autoincrement=True),
Column('user_id', None, ForeignKey('users.id')),
Column('email_address', String(50), nullable=False),
- )
+ )
Table('foobar', metadata,
Column('id', Integer, primary_key=True,
@@ -573,7 +576,7 @@ class UpdateFromMultiTableUpdateDefaultsTest(_UpdateFromTestBase,
Column('user_id', None, ForeignKey('users.id')),
Column('data', String(30)),
Column('some_update', String(30), onupdate='im the other update')
- )
+ )
@classmethod
def fixtures(cls):
@@ -608,9 +611,9 @@ class UpdateFromMultiTableUpdateDefaultsTest(_UpdateFromTestBase,
ret = testing.db.execute(
addresses.update().
- values(values).
- where(users.c.id == addresses.c.user_id).
- where(users.c.name == 'ed'))
+ values(values).
+ where(users.c.id == addresses.c.user_id).
+ where(users.c.name == 'ed'))
eq_(set(ret.prefetch_cols()), set([users.c.some_update]))
@@ -636,9 +639,9 @@ class UpdateFromMultiTableUpdateDefaultsTest(_UpdateFromTestBase,
ret = testing.db.execute(
users.update().
- values(values).
- where(users.c.id == foobar.c.user_id).
- where(users.c.name == 'ed'))
+ values(values).
+ where(users.c.id == foobar.c.user_id).
+ where(users.c.name == 'ed'))
eq_(
set(ret.prefetch_cols()),
@@ -662,9 +665,9 @@ class UpdateFromMultiTableUpdateDefaultsTest(_UpdateFromTestBase,
ret = testing.db.execute(
addresses.update().
- values({'email_address': users.c.name}).
- where(users.c.id == addresses.c.user_id).
- where(users.c.name == 'ed'))
+ values({'email_address': users.c.name}).
+ where(users.c.id == addresses.c.user_id).
+ where(users.c.name == 'ed'))
eq_(ret.prefetch_cols(), [])