99import turu .core .mock
1010import turu .mysql .async_cursor
1111import turu .mysql .cursor
12- from typing_extensions import Never , Unpack , override
12+ from typing_extensions import Never , Self , Unpack , override
1313
1414from .async_cursor import AsyncCursor
1515
@@ -18,6 +18,48 @@ class AsyncConnection(turu.core.async_connection.AsyncConnection):
1818 def __init__ (self , connection : aiomysql .Connection ):
1919 self ._raw_connection = connection
2020
21+ @override
22+ @classmethod
23+ async def connect ( # type: ignore[override]
24+ cls ,
25+ user : Optional [str ] = None ,
26+ password : str = "" ,
27+ host : str = "localhost" ,
28+ database : Optional [str ] = None ,
29+ port : int = 0 ,
30+ ** kwargs : Unpack ["_ConnectParams" ],
31+ ) -> Self :
32+ return cls (
33+ await aiomysql .connection ._connect (
34+ user = user ,
35+ password = password ,
36+ host = host ,
37+ db = database ,
38+ port = port ,
39+ ** kwargs ,
40+ )
41+ )
42+
43+ @override
44+ @classmethod
45+ async def connect_from_env ( # type: ignore[override]
46+ cls ,
47+ user_envname : str = "MYSQL_USER" ,
48+ password_envname : str = "MYSQL_PASSWORD" ,
49+ host_envname : str = "MYSQL_HOST" ,
50+ database_envname : str = "MYSQL_DATABASE" ,
51+ port_envname : str = "MYSQL_PORT" ,
52+ ** kwargs : Unpack ["_ConnectParams" ],
53+ ) -> Self :
54+ return await cls .connect (
55+ user = os .environ .get (user_envname ),
56+ password = os .environ .get (password_envname , "" ),
57+ host = os .environ .get (host_envname , "localhost" ),
58+ database = os .environ .get (database_envname ),
59+ port = int (os .environ .get (port_envname , 0 )),
60+ ** kwargs ,
61+ )
62+
2163 @override
2264 async def close (self ) -> None :
2365 await self ._raw_connection .ensure_closed ()
@@ -60,41 +102,3 @@ class _ConnectParams(TypedDict, total=False):
60102 auth_plugin : str
61103 program_name : str
62104 server_public_key : Optional [Any ]
63-
64-
65- async def connect_async (
66- user : Optional [str ] = None ,
67- password : str = "" ,
68- host : str = "localhost" ,
69- database : Optional [str ] = None ,
70- port : int = 0 ,
71- ** kwargs : Unpack [_ConnectParams ],
72- ) -> AsyncConnection :
73- return AsyncConnection (
74- await aiomysql .connection ._connect (
75- user = user ,
76- password = password ,
77- host = host ,
78- db = database ,
79- port = port ,
80- ** kwargs ,
81- )
82- )
83-
84-
85- async def connect_async_from_env (
86- user_envname : str = "MYSQL_USER" ,
87- password_envname : str = "MYSQL_PASSWORD" ,
88- host_envname : str = "MYSQL_HOST" ,
89- database_envname : str = "MYSQL_DATABASE" ,
90- port_envname : str = "MYSQL_PORT" ,
91- ** kwargs : Unpack [_ConnectParams ],
92- ) -> AsyncConnection :
93- return await connect_async (
94- user = os .environ .get (user_envname ),
95- password = os .environ .get (password_envname , "" ),
96- host = os .environ .get (host_envname , "localhost" ),
97- database = os .environ .get (database_envname ),
98- port = int (os .environ .get (port_envname , 0 )),
99- ** kwargs ,
100- )
0 commit comments