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在終端(其中我跑的代碼)的代碼,並繼續按預期工作之前。 有誰知道這樣的行爲?
感謝,但第一個是一個錯字,它不喜歡的是,在實際的代碼。但你的第二點是一個很好的建議,謝謝你, –