@@ -41,7 +41,8 @@ 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 ,
45+ ** kwargs
4546 ):
4647 # 可能会改setting中的值,所以此处不能直接赋值为默认值,需要后加载赋值
4748 if not ip :
@@ -68,7 +69,7 @@ def __init__(
6869 user = user_name ,
6970 passwd = user_pass ,
7071 db = db ,
71- charset = "utf8mb4" ,
72+ charset = charset ,
7273 setsession = set_session ,
7374 cursorclass = cursors .SSCursor ,
7475 ** kwargs
@@ -85,7 +86,7 @@ def __init__(
8586 user_pass: {}
8687 exception: {}
8788 """ .format (
88- ip , port , db , user_name , user_pass , e
89+ ip , port , db , user_name , user_pass , charset , e
8990 )
9091 )
9192 else :
@@ -119,7 +120,9 @@ def from_url(cls, url, **kwargs):
119120 "user_pass" : url_parsed .password .strip (),
120121 "db" : url_parsed .path .strip ("/" ).strip (),
121122 }
122-
123+ # 解析 query 字符串参数,比如 ?charset=utf8
124+ query_params = dict (parse .parse_qsl (url_parsed .query ))
125+ connect_params .update (query_params )
123126 connect_params .update (kwargs )
124127
125128 return cls (** connect_params )
@@ -200,7 +203,7 @@ def convert(col):
200203 if isinstance (col , (datetime .date , datetime .time )):
201204 return str (col )
202205 elif isinstance (col , str ) and (
203- col .startswith ("{" ) or col .startswith ("[" )
206+ col .startswith ("{" ) or col .startswith ("[" )
204207 ):
205208 try :
206209 # col = self.unescape_string(col)
0 commit comments