python3 项目不改代码前提下,有什么办法可以把引用的 mysqlclient 直接替换为 PyMySQL?

2021-07-29 12:31:34 +08:00
 superbai

背景:项目中用到了 mysqlclient,但是这几天换了 m1 mac,mysqlclient 用不了了,上网搜了下感觉现在继续用 mysqlclient 的解决方案都不太完美,就考虑换成 PyMySQL

问题:如果不改代码的话,有什么方法可以把 mysqlclient 直接替换成 PyMySQL 吗?感觉应该有能实现的方法,但是搜了一圈也没搜到,不知道是关键词不对还是没有办法😂

2994 次点击
所在节点    Python
31 条回复
superbai
2021-07-30 16:43:56 +08:00
@fiht #8 有一说一,除了这些兼容性问题,其它的还是挺不错的,尤其是电池续航比 intel CPU 的 MacBook pro 要好很多,电脑也终于不烫手了
Vegetable
2021-07-30 16:45:13 +08:00
@superbai 保证这句话再 import mysqldb 之前执行就可以。引入依赖包之前,比如启动时是 python entry.py ,那就 entry.py 的最上边添加这个。
superbai
2021-07-30 16:50:27 +08:00
@Vegetable #22 我都是零散的脚本😂,没有统一入口
julyclyde
2021-07-30 18:08:25 +08:00
@superbai 写到 settings 里
Trim21
2021-07-31 00:45:58 +08:00
@superbai #23 那你手动写个叫 mysqldb 的包安装到虚拟环境里,然后从 pymysql 里面 import *吧...
frostming
2021-08-02 17:58:34 +08:00
@superbai 接 25L, 大可不必如此麻烦,只用放一个 _patch_mysql.pth 到 site-packages 下面,内容是

import pymysql; pymysql.install_as_MySQLdb()
superbai
2021-08-04 22:53:16 +08:00
@frostming #26 感谢,又学到了一个知识点;不过我是虚拟环境的话,这样做是不是只能对当前的虚拟环境生效?因为 site-packages 是跟着虚拟环境走的吧
superbai
2021-08-04 22:53:41 +08:00
@julyclyde #24 是指 django 的 settings 么?我没有用 django
superbai
2021-08-04 22:54:06 +08:00
@Trim21 #25 我是想一次改动,对所有人的环境都生效😂
frostming
2021-08-05 09:00:57 +08:00
@superbai 是的,根据你的需求(项目中用不了 mysqlclient ),每个虚拟环境中按需修改已经足够了
strict
2021-08-13 15:27:53 +08:00
monkey patch

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/792453

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX