4
class MySQL(object):
def __init__(self):
self.dbpool = adbapi.ConnectionPool(
'MySQLdb',
db='dummy',
user='root',
passwd='',
host = 'localhost',
cp_reconnect = True,
cursorclass=MySQLdb.cursors.DictCursor,
charset='utf8',
use_unicode=True
)
def process(self, item):
query = self.dbpool.runInteraction(self.conditionalInsert, item).addErrback(self.handle_error)
return item
def conditionalInsert(self, tx, item):
tx.execute("INSERT INTO User (user_name) VALUES (%s)",(name))
tx.execute("SELECT LAST_INSERT_ID()")
lastID = getID(tx.fetchone())
# DO SOMETHING USING lasID
...
...
def handle_error(self, e):
log.err(e)
我們下面第二行的lastID對應於插入第一行嗎?或者它可能來自任何runInteraction線程?扭曲的adbapi:runInteraction last_insert_id()
tx.execute("INSERT INTO User (user_name) VALUES (%s)",(name))
tx.execute("SELECT LAST_INSERT_ID()")
非常感謝你的反應。 已經3年多了,我發佈了這個,並已經想出了你說的話。我非常感謝你爲此提供答案。 :) –