Skip to content

Commit a5eedf3

Browse files
authored
Merge pull request #288 from coloraven/master
mysql数据库增加支持设置charset
2 parents 0018f69 + dc92bc9 commit a5eedf3

1 file changed

Lines changed: 6 additions & 4 deletions

File tree

feapder/db/mysqldb.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ def wapper(*args, **kwargs):
4141

4242
class 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

Comments
 (0)