使用MySQL和Python并发读写(不同进程)的问题

2024-04-25 04:50:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个并发进程:

1.)Writer-定期向MySQL数据库中插入新行(10-20行/秒)

2.)读卡器-从插入的同一个表中读取

我注意到Reader进程似乎只看到数据库在其启动时的快照。在启动之前没有发现插入。如果我关闭Reader进程并重新启动它(但让Writer运行),它有时(但不总是)看到更多的数据,但似乎再次获得了数据库的时间点视图。在

我在每次插入后运行一次提交(下面的代码片段)。我调查了这是否是变更缓冲/池的功能,但是做了一个“设置@@global.innodb_change_buffering=无“没有效果。另外,如果我进入MySQL workbench,我可以查询由编写器插入的最新数据。因此,这似乎是如何设置Python/MySQL连接的函数。在

我的环境是:

Windows 7系统

MySQL5.5.9版

Python2.6.6—EPD 6.3-1(32位)

MySQL python连接器

插入代码为:

    def insert(dbConnection, statement):
    cursor = dbConnection.cursor()
    cursor.execute(statement)   
    warnings = cursor.fetchwarnings()
    if warnings:
        print warnings
        rowid = []
    else:
        rowid = cursor.lastrowid
    cursor.close()
    dbConnection.commit()
    return rowid    

读卡器代码是:

^{pr2}$

Tags: 数据代码数据库进程时间mysql快照cursor
1条回答
网友
1楼 · 发布于 2024-04-25 04:50:33

阅读侧是什么样子的?在

我打赌这是读端隔离级别的问题。很可能您的read连接正在获取一个隐式事务,默认的InnoDB隔离级别是:

Repeatable Read

尝试发布:

cursor.execute("SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED")

在阅读方面。在

相关问题 更多 >