0
问题简而言之:MySQLdb.connect()
工作在主线程,不工作在其他线程。无法连接到python中的一个线程(主线程罚款)
我有一个叫做Bot
的类,有一些方法。 是这样的:
class Bot():
def task1():
read_from_db()
# some other work
def task2():
read_from_db()
# some other work
和我有接受Bot
对象和task_name
并启动机器人对象的任务线程类。
class taskThread (threading.Thread):
def __init__(self, bot, task):
threading.Thread.__init__(self)
self.bot = bot
self.task = task
def run(self):
print "Starting " + self.task + " for " + self.bot.username
if self.task == "task1":
self.bot.task1()
elif self.task == "task2":
self.bot.task2()
print "Exiting " + self.task + " for " + self.bot.username
我想每一件事的read_from_db()
但它不会在一个线程中运行。 它工作正常,如果我在主线程中调用bot.task1()
,但如果我创建一个myThread对象,并告诉它运行task1它完全停止在MySQLdb.connect()
行没有错误。它只是停止。
def read_from_db():
db = MySQLdb.connect(host="localhost",
user="root",
passwd="",
db="db_name",
unix_socket="/opt/lampp/var/mysql/mysql.sock")
db.set_character_set('utf8')
我搜查了很多,但我找不到任何东西。
编辑:古怪的代码时停权创建一个连接到数据库,如果我按Ctrl + C在终端(其中我跑的代码)的代码,并继续按预期工作之前。 有谁知道这样的行为?
感谢,但第一个是一个错字,它不喜欢的是,在实际的代码。但你的第二点是一个很好的建议,谢谢你, –