mirror of
https://github.com/sqlalchemy/sqlalchemy.git
synced 2026-05-11 11:22:15 -04:00
60 lines
1.7 KiB
Python
60 lines
1.7 KiB
Python
import sys
|
|
import testbase
|
|
from sqlalchemy import *
|
|
|
|
|
|
class CaseTest(testbase.PersistTest):
|
|
|
|
def setUpAll(self):
|
|
global info_table
|
|
info_table = Table('infos', testbase.db,
|
|
Column('pk', Integer, primary_key=True),
|
|
Column('info', String(30)))
|
|
|
|
info_table.create()
|
|
|
|
info_table.insert().execute(
|
|
{'pk':1, 'info':'pk_1_data'},
|
|
{'pk':2, 'info':'pk_2_data'},
|
|
{'pk':3, 'info':'pk_3_data'},
|
|
{'pk':4, 'info':'pk_4_data'},
|
|
{'pk':5, 'info':'pk_5_data'})
|
|
def tearDownAll(self):
|
|
info_table.drop()
|
|
|
|
def testcase(self):
|
|
inner = select([case([[info_table.c.pk < 3, literal('lessthan3', type=String)],
|
|
[info_table.c.pk >= 3, literal('gt3', type=String)]]).label('x'),
|
|
info_table.c.pk, info_table.c.info], from_obj=[info_table]).alias('q_inner')
|
|
|
|
inner_result = inner.execute().fetchall()
|
|
|
|
# Outputs:
|
|
# lessthan3 1 pk_1_data
|
|
# lessthan3 2 pk_2_data
|
|
# gt3 3 pk_3_data
|
|
# gt3 4 pk_4_data
|
|
# gt3 5 pk_5_data
|
|
assert inner_result == [
|
|
('lessthan3', 1, 'pk_1_data'),
|
|
('lessthan3', 2, 'pk_2_data'),
|
|
('gt3', 3, 'pk_3_data'),
|
|
('gt3', 4, 'pk_4_data'),
|
|
('gt3', 5, 'pk_5_data'),
|
|
]
|
|
|
|
outer = select([inner])
|
|
|
|
outer_result = outer.execute().fetchall()
|
|
|
|
assert outer_result == [
|
|
('lessthan3', 1, 'pk_1_data'),
|
|
('lessthan3', 2, 'pk_2_data'),
|
|
('gt3', 3, 'pk_3_data'),
|
|
('gt3', 4, 'pk_4_data'),
|
|
('gt3', 5, 'pk_5_data'),
|
|
]
|
|
|
|
if __name__ == "__main__":
|
|
testbase.main()
|