我有一个主要的Python脚本连接到MySQL数据库,并从中剔除少量记录。基于返回的结果,它将启动尽可能多的线程(类实例)和抓取许多记录。每个线程应该返回到数据库并通过将一个状态标志设置为不同的状态(“进程已启动”)来更新另一个表。如何使用Python多线程处理MySQL连接(s)
要做到这一点我想:
1)通过了数据库连接的所有主题 2)打开从每个线程
一个新的数据库连接,但他们都不是工作。
我可以运行我的更新没有任何问题在这两种情况下通过使用try/except,但MySQL表尚未更新,并且没有生成错误。我在这两种情况下都使用了commit。
我的问题是如何在这种情况下处理MySQL连接?
更新基于第一几点意见:
MAIN SCRIPT
-----------
#Connecting to DB
db = MySQLdb.connect(host = db_host,
db = db_db,
port = db_port,
user = db_user,
passwd = db_password,
charset='utf8')
# Initiating database cursor
cur = db.cursor()
# Fetching records for which I need to initiate a class instance
cur.execute('SELECT ...')
for row in cur.fetchall() :
# Initiating new instance, appending it to a list and
# starting all of them
CLASS WHICH IS INSTANTIATED
---------------------------
# Connecting to DB again. I also tried to pass connection
# which has been opened in the main script but it did not
# work either.
db = MySQLdb.connect(host = db_host,
db = db_db,
port = db_port,
user = db_user,
passwd = db_password,
charset='utf8')
# Initiating database cursor
cur_class = db.cursor()
cur.execute('UPDATE ...')
db.commit()
很难说,不知道如何连接到你的数据库,你如何实现更新任何东西。 – Ashalynd
我不完全理解你的问题。是最简单的情况下工作,像单线程python连接到MySQL和更新表? – qqibrow
@Ashalynd感谢您花时间!抱歉,我是AFK。我用我的主代码和类代码中的代码snipet更新了我的问题。这是我如何启动实例并打开数据库连接的方式。我试图捕捉错误,当打开连接和执行查询从尝试/除了没有运气的情况下。 – g0m3z