@@ -32,14 +32,6 @@ class Address(Base):
32
32
user = relationship ("User" , back_populates = "addresses" )
33
33
34
34
35
- PydanticUser = sqlalchemy_to_pydantic (User )
36
- PydanticAddress = sqlalchemy_to_pydantic (Address )
37
-
38
-
39
- class PydanticUserWithAddresses (PydanticUser ):
40
- addresses : List [PydanticAddress ] = []
41
-
42
-
43
35
Base .metadata .create_all (engine )
44
36
45
37
@@ -56,7 +48,13 @@ class PydanticUserWithAddresses(PydanticUser):
56
48
db .commit ()
57
49
58
50
59
- def test_pydantic_sqlalchemy ():
51
+ def test_defaults () -> None :
52
+ PydanticUser = sqlalchemy_to_pydantic (User )
53
+ PydanticAddress = sqlalchemy_to_pydantic (Address )
54
+
55
+ class PydanticUserWithAddresses (PydanticUser ):
56
+ addresses : List [PydanticAddress ] = []
57
+
60
58
user = db .query (User ).first ()
61
59
pydantic_user = PydanticUser .from_orm (user )
62
60
data = pydantic_user .dict ()
@@ -78,3 +76,35 @@ def test_pydantic_sqlalchemy():
78
76
{"email_address" : "eddy@example.com" , "id" : 2 , "user_id" : 1 },
79
77
],
80
78
}
79
+
80
+
81
+ def test_config () -> None :
82
+ class Config :
83
+ orm_mode = True
84
+ allow_population_by_field_name = True
85
+
86
+ @classmethod
87
+ def alias_generator (cls , string : str ) -> str :
88
+ pascal_case = "" .join (word .capitalize () for word in string .split ("_" ))
89
+ camel_case = pascal_case [0 ].lower () + pascal_case [1 :]
90
+ return camel_case
91
+
92
+ PydanticUser = sqlalchemy_to_pydantic (User )
93
+ PydanticAddress = sqlalchemy_to_pydantic (Address , config = Config )
94
+
95
+ class PydanticUserWithAddresses (PydanticUser ):
96
+ addresses : List [PydanticAddress ] = []
97
+
98
+ user = db .query (User ).first ()
99
+ pydantic_user_with_addresses = PydanticUserWithAddresses .from_orm (user )
100
+ data = pydantic_user_with_addresses .dict (by_alias = True )
101
+ assert data == {
102
+ "fullname" : "Ed Jones" ,
103
+ "id" : 1 ,
104
+ "name" : "ed" ,
105
+ "nickname" : "edsnickname" ,
106
+ "addresses" : [
107
+ {"emailAddress" : "ed@example.com" , "id" : 1 , "userId" : 1 },
108
+ {"emailAddress" : "eddy@example.com" , "id" : 2 , "userId" : 1 },
109
+ ],
110
+ }
0 commit comments