首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Crate上查询时遇到“卡住”

在Crate上查询时遇到“卡住”
EN

Stack Overflow用户
提问于 2017-03-07 07:34:17
回答 1查看 123关注 0票数 0

我运行了循环,并在每个循环中密集查询了大量数据。我的数据库是使用Crate构建的。有时,循环会暂停,因为Crate没有响应我的查询结果。(这种情况并不总是发生)伪代码如下所示

代码语言:javascript
复制
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的长度可能有数百万,并且在每个循环中查询都是密集的。使用Crate的数据库专家有没有遇到过这个问题?如果是,您是如何解决这个问题的?重启数据库似乎不起作用。非常感谢您的解决方案!

EN

回答 1

Stack Overflow用户

发布于 2017-03-28 16:43:11

我无法重现这一点,但我怀疑这可能是因为您每次都在循环内创建连接。我不会重新创建连接数百万次,而是在循环外部重写一次来创建连接,然后将其传递到get_report中,如下所示:

代码语言:javascript
复制
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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42637582

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档