请教关于 PYTHON3.6 下使用 MYSQL 数据库的问题

2017-10-16 21:51:43 +08:00
 saximi
刚开始学习在 WIN7+PYTHON3.6+MYSQL 数据库的环境下编写爬虫,研究了网上的一个用 MySQLdb 模块和 MYSQL 的例子: http://www.cnblogs.com/rwxwsblog/p/4572367.html 

将文中代码在 WIN7+PYTHON3.6 环境下运行时却遇到了问题: 

1、执行 import MySQLdb 时报模块不存在的错,在 pypi 网站上的 MySQL-python 提示只适用于 PYTHON2.7,那么应该安装什么包呢? 

2、在网上看到这句话:“ MySQLdb,目前看来,可以视为一个不再继续维护的项目了。另外,针对 python 3.x 的 mysql,另外一个项目,pymysql 导致可以考虑。其是兼容 dbapi 的” 所以,是否 MySQLdb 包在 WIN7+PYTHON3.6 的环境下应该改为用 pymysql 更合适?  

3、若改用 pymysql,dbpool=adbapi.ConnectionPool('MySQLdb',**dbargs) 这个语句在 PYTHON3.6 下要实现相同功能对应的写法应该是什么? 
 
4、若改用 pymysql,cursorclass=MySQLdb.cursors.DictCursor, 这个语句对应的 PYTHON3.6 下的写法应该是什么?  

5、如果还是用 MySQLdb 模块,游标如何声明? 我发现下面这两条语句的写法是错误的,提示 dbpool 没有 cursor 属性。 
   dbpool=adbapi.ConnectionPool('MySQLdb',**dbargs) 
   cur=dbpool.cursor()  #报错,提示 dbpool 没有 cursor 属性 

恳请大家指点,万分感谢!

6094 次点击
所在节点    Python
26 条回复
pyufftj
2017-10-17 11:38:09 +08:00
pymysql 平时都用这个
julyclyde
2017-10-17 13:31:27 +08:00
install_as_MySQLdb()
然后其它都照旧
crazykuma
2017-10-17 14:16:00 +08:00
用 pymysql,然后用 SQLAlchemy 建立连接池,方便快捷
saximi
2017-10-17 20:07:17 +08:00
@cxyfreedom 非常感谢! 我自己尝试着用 runQuery()方法来实现,例如下面的语句:
r=self.dbpool.runQuery("SELECT count(*) FROM tab")

因为返回的结果是元组,所以我接着用这个语句输出查询结果:
print(r[0][0])

但是报错 TypeError: 'Deferred' object does not support indexing
如果直接打印 r, 得到的只是对象的地址,我应该如何写才能正确输出用 runQuery 得到的查询结果呢?
cxyfreedom
2017-10-18 10:04:31 +08:00
@saximi 你仔细看我后面那个例子是怎么调用的啊。还有就是看文档,看博客。
saximi
2017-10-18 19:30:11 +08:00
@cxyfreedom 我发现_getData()返回的竟然不是 SQL 语句执行后的结果,而是 True 和 False?

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

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

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

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

© 2021 V2EX