2323 Index ,
2424 MetaData ,
2525 Boolean ,
26- BIGINT ,
26+ BIGINT , select ,
2727)
2828from sqlalchemy .orm import Session , DeclarativeBase , Mapped , mapped_column
2929from sqlalchemy .types import REAL
30- from sqlalchemy .testing import eq_
30+ from sqlalchemy .testing import eq_ , is_true
3131from sqlalchemy .testing .plugin .plugin_base import fixtures
3232
3333
@@ -50,6 +50,12 @@ def define_tables(cls, metadata):
5050 numbers .c .prime .desc (),
5151 spanner_storing = [numbers .c .alternative_name ],
5252 )
53+ Table (
54+ "users" ,
55+ metadata ,
56+ Column ("ID" , Integer , primary_key = True ),
57+ Column ("name" , String (20 )),
58+ )
5359
5460 def test_hello_world (self , connection ):
5561 greeting = connection .execute (text ("select 'Hello World'" ))
@@ -69,7 +75,7 @@ def test_reflect(self, connection):
6975 engine = connection .engine
7076 meta : MetaData = MetaData ()
7177 meta .reflect (bind = engine )
72- eq_ (1 , len (meta .tables ))
78+ eq_ (2 , len (meta .tables ))
7379 table = meta .tables ["numbers" ]
7480 eq_ (5 , len (table .columns ))
7581 eq_ ("number" , table .columns [0 ].name )
@@ -127,10 +133,25 @@ class Number(Base):
127133 prime : Mapped [bool ] = mapped_column (Boolean )
128134 ln : Mapped [float ] = mapped_column (REAL )
129135
136+ class User (Base ):
137+ __tablename__ = "users"
138+ ID : Mapped [int ] = mapped_column (primary_key = True )
139+ name : Mapped [str ] = mapped_column (String (20 ))
140+
130141 engine = connection .engine
131142 with Session (engine ) as session :
132143 number = Number (
133144 number = 1 , name = "One" , alternative_name = "Uno" , prime = False , ln = 0.0
134145 )
135146 session .add (number )
136147 session .commit ()
148+
149+ with Session (engine ) as session :
150+ user = User (name = "Test" )
151+ session .add (user )
152+ session .commit ()
153+
154+ statement = select (User ).filter_by (name = "Test" )
155+ users = session .scalars (statement ).all ()
156+ eq_ (1 , len (users ))
157+ is_true (users [0 ].ID > 0 )
0 commit comments