77Base = declarative_base ()
88
99TESTCASE02_TABLE = "pydynamodb_test_case02"
10+ USER_TABLE = "user"
1011
1112
1213# Declarative Mapping
@@ -19,6 +20,16 @@ class _TestCase02(Base):
1920 col_num = Column (Numeric )
2021 col_nested = Column ()
2122
23+ class _User (Base ):
24+ __tablename__ = USER_TABLE
25+
26+ key_partition = Column (String , primary_key = True )
27+ key_sort = Column (Integer , primary_key = True )
28+ username = Column (String )
29+ password = Column (String )
30+ default = Column (Numeric )
31+ comment = Column (String )
32+
2233
2334class TestSQLAlchemyDynamoDB :
2435 def test_ping (self , engine ):
@@ -370,3 +381,60 @@ def test_data_limit(self, engine):
370381 )
371382 rows = conn .execute (table .select ().limit (1 )).fetchall ()
372383 assert len (rows ) == 1
384+
385+ def test_reserved_word_table_insert (self , engine ):
386+ engine , conn = engine
387+
388+ with Session (engine ) as session :
389+ for i in range (0 , 5 ):
390+ user = _User ()
391+ user .key_partition = "test_user_row_2"
392+ user .key_sort = i
393+ user .username = "user" + str (i )
394+ user .password = "pwd" + str (i )
395+ user .default = 1
396+ user .comment = "user account"
397+ session .add (user )
398+ session .commit ()
399+
400+ rows = conn .execute (
401+ text (
402+ """
403+ SELECT * FROM %s WHERE key_partition = :pk
404+ """
405+ % USER_TABLE
406+ ),
407+ {"pk" : "test_user_row_2" },
408+ ).fetchall ()
409+ assert len (rows ) == 5
410+
411+ def test_reserved_word_table_update (self , engine ):
412+ engine , conn = engine
413+
414+ with Session (engine ) as session :
415+ user = session .scalars (
416+ select (_User ).where (
417+ _User .key_partition == "test_user_row_2" ,
418+ _User .key_sort == 1 ,
419+ )
420+ ).one ()
421+ user .username = "user_updated"
422+ user .default = 0
423+ user .comment = "user account updated"
424+ session .commit ()
425+
426+ rows = conn .execute (
427+ text (
428+ """
429+ SELECT username, "default", "comment" FROM %s
430+ WHERE key_partition = :pk
431+ AND key_sort = :sk
432+ """
433+ % USER_TABLE
434+ ),
435+ {"pk" : "test_user_row_2" , "sk" : 1 },
436+ ).fetchall ()
437+ assert len (rows ) == 1
438+ assert rows [0 ][0 ] == "user_updated"
439+ assert rows [0 ][1 ] == 0
440+ assert rows [0 ][2 ] == "user account updated"
0 commit comments