在我们使用python连接mysql 的时候,有几种库可以选择,mysql-connector-python,MySQL-python,pymysql,但是无论使用哪种库,都有一个问题,就是fetchall出来的代码row只是一种数据类型,元祖或者字典,只能用下标或者字段名中的一种来访问,我使用过sqlite3,在使用sqlite3的过程中,如果设置了conn.row_factory = sqlite3.Row,就可以同时使用下标或者字段名来访问了。
所以我就想自己实现一下这个功能,我是基于mysql-connector-python-8.0.5,将里面的lib做了修改,修改了lib/mysql/connector/cursor.py和lib/mysql/connector/connection.py,目前只做了初步的修改,功能比较简单
先贴一段代码:
import mylib.mysql.connector as mysql
#上面这行是测试的时候放的,安装好了直接import mysql.connector as mysql即可
conn = mysql.connect(host='localhost', user='root',passwd='admin',db='test',charset='utf8')
c = conn.cursor(mysqlrow=True)
c.execute("SELECT name,age FROM student;")
for row in c.fetchall():
print row[0]
print row["name"]
以上代码都能得到print 里面都能得到name的值
代码下载地址
https://github.com/loversmile/mysql-connector-python-8.0.5-loversmile
目前实现比较简单,后续后更新