@@ -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 , ** kwargs
44+ self , ip = None , port = None , db = None , user_name = None , user_pass = None , charset = "utf8mb4" , ** 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 cursorclass = cursors .SSCursor ,
7373 ) # cursorclass 使用服务的游标,默认的在多线程下大批量插入数据会使内存递增
7474
@@ -83,7 +83,7 @@ def __init__(
8383 user_pass: {}
8484 exception: {}
8585 """ .format (
86- ip , port , db , user_name , user_pass , e
86+ ip , port , db , user_name , user_pass , charset , e
8787 )
8888 )
8989 else :
@@ -117,7 +117,9 @@ def from_url(cls, url, **kwargs):
117117 "user_pass" : url_parsed .password .strip (),
118118 "db" : url_parsed .path .strip ("/" ).strip (),
119119 }
120-
120+ # 解析 query 字符串参数,比如 ?charset=utf8
121+ query_params = dict (parse .parse_qsl (url_parsed .query ))
122+ connect_params .update (query_params )
121123 connect_params .update (kwargs )
122124
123125 return cls (** connect_params )
0 commit comments