在板条箱上查询时获取'stuck'



我运行了循环,并在每个循环中都查询了许多数据。 我的数据库是使用板条箱构建的。 有时,由于板条箱没有回复,循环停顿了 我的查询结果。(虽然这并不总是发生)伪代码如下

from crate import client
class data_access(object):
    def __init__(self, IP):
        conn = client.connect(IP)
        self.cursor = conn.cursor()
    def get_report(self, event_id):
        self.cursor.execute('''
            select schema.events."Info", schema.events."Time"
            from schema.events
            where schema.events."Id"='%s' ''' % event_id)
        event = []
        for row in self.cursor:
           event.append((row[0], row[1]))
        return event

dal = data_access("server IP")
all_events = []
for event_id in event_ids:
    events = dal.get_report(event_id)
    if len(events) >0: all_event += events

event_ids的长度可能是数百万,在每个循环中,查询都是密集的。是否有使用板条箱的DB专家会遇到这些问题?如果是,您是如何解决此问题的?重新启动数据库似乎不起作用。非常感谢您的解决方案!

我无法再现此功能,但是我怀疑这可能是由于您每次在循环中创建连接而引起的。我会重写它以创建连接曾经,然后在循环外部创建连接,然后将其传递到get_report,例如:

from crate import client
def get_report(event_id, conn):
    cursor = conn.cursor()
    cursor.execute('''
       select schema.events."Info", schema.events."Time"
       from schema.events
       where schema.events."Id"='%s' ''' % event_id)
    event = []
    for row in cursor:
       event.append((row[0], row[1]))
    return event

all_events = []
conn = client.connect("server IP")
for event_id in event_ids:
    events = get_report(event_id, conn)
    if len(events) >0: all_event += events

相关内容

  • 没有找到相关文章

最新更新