mysqlclient

python使用mysqlclient替代MySQLdb

我是研究僧i 提交于 2020-03-02 03:27:20
简介 mysqlclient 是MySQLdb的fork版,增加了对python 3.x的支持和其它优化,推荐替代MySQLdb 安装 windows 10使用pip install mysqlclient会报错安装不了(其它系统平台未测试),需要自己下载包 https://www.lfd.uci.edu/~gohlke/pythonlibs/#mysqlclient 安装,( cp27 、 cp35 分别标识python2.7和python3.5, win32 、 win_amd64 分别表示32位系统和64位系统,需要下载自己环境相应版本) pip install mysqlclient-1.3.12-cp27-cp27m-win_amd64.whl 其它 [django官方文档]中也是推荐mysqlclient替代MySQLdb python的orm库 orator 则必须使用mysqlclient或者pymysql,如果使用MySQLdb会报错 'autocommit' is an invalid keyword argument for this function 来源: oschina 链接: https://my.oschina.net/u/947688/blog/1558146

xPool

别等时光非礼了梦想. 提交于 2020-03-01 14:11:57
最近待业,闲的蛋疼,发现C++下连mysql连接池这么基础的东西都没用过,身为一名计算机毕业生,深感愧疚,遂生一想法,写个或者找个连接池,以增强本人垃圾一样的专业修养。 没想到写出来第一版就存在内存管理问题导致的coredump,查了半天,发现是调用了空指针的成员函数,彻底晕倒,其间为了调试gdb core中bt出来的libmysqlclient.so的mysql_real_connect调用,我下了mysql的5.5.31源代码来编了若干遍,想编个debug版调试最后也是没有成功。发现问题还是看网上帖子讲segfault11这种问题多半都是空指针搞的,反过头加了些指针的打印语句才意识到低级的错误,后来debug过程中还发现了更低级的逻辑错误,略去不表,还是自己太菜,连个空指针这个白痴的内存问题都不预先防范,搞得一个300+行的东西,弄了三天才算稳定了,大大的罪过,浪费自己和社会的生产力。 过程中想到自己既然写不好,干脆找个好用的,结果发现了个libzdb,支持好些个开源db的连接池,随便下了个破代码测了一下,也没仔细搞,debug中参考了一下它的源码,还算是有点启发。 目前这个源码用valgrind自己测,有74KB左右的内存泄露,明白人能改改的话最好,作为一个菜鸟我只能帮自己到这了,当然这个泄露不会随时间线性的增长,这个我还是测过了的,有人能用到生产环境的话

【原创】modb 功能设计之“支持部分MySQL客户端协议”-1

那年仲夏 提交于 2019-11-29 09:55:33
在 《 modb 功能设计之“支持多消费者单生产者” 》中说到:需要有一个单独的线程来处理 sql 语句。本文就针对“ 支持部分 MySQL 客户端协议”做第一部分讲述。 最初的想法是,rabbitmq 客户端从 queue 消费到了包含 sql 语句的消息后,需要提取并分析该 sql 后,通过 MySQL 协议再要求数据库执行该 sql 语句。这就要求我这个 demo 必须实现了 MySQL 客户端侧所需的协议部分。要实现这个,有三种途径: 利用公司已有的 dbi 的库实现 MySQL 访问 基于 mysqlclient 库做开发实现 MySQL 客户端侧协议 自己实现 MySQL 客户端侧需要的协议 我的选择: 不打算用公司的 dbi 库,首先,该库基于了其他的公司库,而我并不想使用;其次,该库封装的也不是很好,之前我还查出了 4 处崩溃,不排除还有其他问题;最后,该库其实也是在 mysqlclient 上做的封装,和上面第 2条其实是一样的。所以,最终我决定选择第 2 种方式,自己搞个“山头”出来。 PS:其实开始的时候也想过采用上面的第 3 种方式,自己从底层开始实现如何支持 MySQL 客户端协议,结果“呵呵”了,难度和工作量不是一般的大~~ 确定基于什么来做开发后,该做下一步目标选择了: 直接使用 mysqlclient 提供的 API