2016-10-05 3 views
0

Я использую Tornado и Postgres, у меня есть несколько запросов (4 или 5), которые я приложил к списку во время программы, и теперь я хочу выполнить их все сразу!Как выполнить несколько запросов из списка сразу в Python?

, когда я пытался выполнить я получил ошибку, которая была:

"DummyFuture does not support blocking for results" 

я выполнил этот код:

yield self.db.execute(''.join(queries)).result() 

"запросы" является список запросов!

Это мой пул соединений, а также настройки Tonado:

ioloop = IOLoop.instance() 

application.db = momoko.Pool(
    dsn='dbname=xxx user=xxx password=xxxx host=x port=xxxx' 
    size=xx, 
    ioloop=ioloop, 
) 

# this is a one way to run ioloop in sync 
future = application.db.connect() 
ioloop.add_future(future, lambda f: ioloop.stop()) 
ioloop.start() 
future.result() # raises exception on connection error 

http_server = HTTPServer(application) 
http_server.listen(8888, 'localhost') 
ioloop.start() 

ответ

1

Не называйте result() на будущее в сопрограммы Торнадо. Получите результаты следующим образом:

@gen.coroutine 
def method(self): 
    result = yield self.db.execute('...') 

Кроме того, я не думаю, что это будет работать, чтобы просто присоединяться к вашим запросам как строки. Результат не будет действительным SQL. Вместо этого:

@gen.coroutine 
def method(self): 
    results = yield [self.db.execute(q) for q in queries] 
+0

Спасибо, кстати, вместо «выход self.db.execute (.„“Join (запросы)) результат().» Я казнены «запросы урожая», я добавляю мои запросы в мой список как вы объяснили, как «append (self.db.execute (....) – Nikito

 Смежные вопросы

  • Нет связанных вопросов^_^