首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pandas read_sql元数据锁

Pandas read_sql元数据锁
EN

Stack Overflow用户
提问于 2016-04-25 11:06:38
回答 1查看 1.1K关注 0票数 1

我正在使用pandas读取mysql表。然而,在一条read_sql语句之后,我经常得到表上的一个表锁。以下是查询,

代码语言:javascript
复制
mysql_cn= MySQLdb.connect(host='localhost', port=3306,user='root',passwd='mysql', db='DB_P001')
dfVars = pd.read_sql('select * from markeff_5_varlist', con=mysql_cn, chunksize = 10)

一旦我运行,dfVars数据帧就被填充了,但是mysql中有一个读锁。此锁定将一直持续到mysql重新启动。

代码语言:javascript
复制
--------------
ROW OPERATIONS
--------------
0 queries inside InnoDB, 0 queries in queue
1 read views open inside InnoDB
Main thread process no. 2567, id 140597860407040, state: sleeping
Number of rows inserted 0, updated 0, deleted 0, read 11494
0.00 inserts/s, 0.00 updates/s, 0.00 deletes/s, 3.31 reads/s
----------------------------
END OF INNODB MONITOR OUTPUT
============================

我真的很感谢你的帮助。

谢谢,

EN

回答 1

Stack Overflow用户

发布于 2020-06-25 23:25:26

这是使用chunksize时的一个问题。正如@MaxU在他的评论中指出的,chunksize参数创建了一个迭代器。这意味着您正在提交一个查询,并准备好从数据库中接收分块的结果。在您使用整个迭代器之前,数据库将被锁定。

如果数据库没有被锁定,那么它就不能保证查询的结果是准确的,同时允许对数据库进行写/编辑。

要耗尽迭代器,请使用next(dfVars),直到它被扩展,或者循环遍历迭代器,如下所示:

代码语言:javascript
复制
for df_chunk in pd.read_sql(... chunksize=...):
    <do something>

希望这能有所帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36831400

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档