@@ -41,7 +41,7 @@ def wapper(*args, **kwargs):
4141
4242class MysqlDB :
4343 def __init__ (
44- self , ip = None , port = None , db = None , user_name = None , user_pass = None , set_session = None , ** kwargs
44+ self , ip = None , port = None , db = None , user_name = None , user_pass = None , charset = "utf8mb4" , set_session = None , ** kwargs
4545 ):
4646 # 可能会改setting中的值,所以此处不能直接赋值为默认值,需要后加载赋值
4747 if not ip :
@@ -68,7 +68,7 @@ def __init__(
6868 user = user_name ,
6969 passwd = user_pass ,
7070 db = db ,
71- charset = "utf8mb4" ,
71+ charset = charset ,
7272 setsession = set_session ,
7373 cursorclass = cursors .SSCursor ,
7474 ** kwargs
@@ -85,7 +85,7 @@ def __init__(
8585 user_pass: {}
8686 exception: {}
8787 """ .format (
88- ip , port , db , user_name , user_pass , e
88+ ip , port , db , user_name , user_pass , charset , e
8989 )
9090 )
9191 else :
@@ -119,7 +119,9 @@ def from_url(cls, url, **kwargs):
119119 "user_pass" : url_parsed .password .strip (),
120120 "db" : url_parsed .path .strip ("/" ).strip (),
121121 }
122-
122+ # 解析 query 字符串参数,比如 ?charset=utf8
123+ query_params = dict (parse .parse_qsl (url_parsed .query ))
124+ connect_params .update (query_params )
123125 connect_params .update (kwargs )
124126
125127 return cls (** connect_params )
0 commit comments