Pandas 将KDB查询返回到框架

Pandas 将KDB查询返回到框架,pandas,kdb,qpython,qpython3,Pandas,Kdb,Qpython,Qpython3,我想从KDB数据库中提取数据并放入datframe。我的查询在qpad中运行良好,没有问题;只需要将它写入我的数据框。我的代码: from qpython import qconnection # Create the connection and save the handle to a variable q = qconnection.QConnection(host = 'wokplpaxvj003', port = 11503, username = 'pelucas', passw

我想从KDB数据库中提取数据并放入datframe。我的查询在qpad中运行良好,没有问题;只需要将它写入我的数据框。我的代码:

from qpython import qconnection

# Create the connection and save the handle to a variable
q  = qconnection.QConnection(host = 'wokplpaxvj003', port = 11503, username = 'pelucas', password = 'Dive2600', timeout = 3.0)
try:
    # initialize connection
    q.open()
    print(q)
    print('IPC version: %s. Is connected: %s' % (q.protocol_version, q.is_connected()))

    df = q.sendSync('{select from quote_flat where date within (2019.08.14;2019.08.14), amendment_no = (max;amendment_no)fby quote_id}')

    df.info()

finally:
    q.close()

它在
df.info()
提升
AttributeError时失败:“QLambda”对象没有属性“info”
,因此我猜调用没有成功。

看起来您只发送了一个lambda,但没有执行该lambda的指令。两种选择:

  • 不要把它变成羔羊
  • 执行lambda

  • 看起来您只发送了一个lambda,但没有执行该lambda的指令。两种选择:

  • 不要把它变成羔羊
  • 执行lambda

  • 谢谢@Terrylynchi。我选择了返回记录的第二个选项。当我计算变量时,我可以看到df中的值,但在df.info()上获得“raise AttributeError”(“recarray没有属性%s”%attr):“AttributeError:recarray没有属性信息”。看起来好像数据库中的许多字段都已返回到单个字段,因此df是一个1xm matirx。有没有办法解析这些值,以便从q.sendSync返回一个n x m网格?我对qpython没有足够的经验,不知道会出现什么错误,但我确实记得,对于同步调用,只需使用
    q
    ,而不是
    q.sendSync
    -也许试试吧?根据我的经验,我会发出类似于
    df=q('select From table')的调用
    然后我将使用索引逐行循环查看结果谢谢Terry将尝试Thank@TerrylySync。我使用了第二个选项返回记录。我在计算变量时可以看到df中的值,但得到“raise AttributeError”(“recarray没有属性%s”%attr):df.info()上的“AttributeError:recarray没有属性信息”。看起来好像数据库中的许多字段都已返回到单个字段,因此df是一个1xm matirx。有没有办法解析这些值,以便从q.sendSync返回一个n x m网格?我对qpython没有足够的经验,不知道会出现什么错误,但我确实记得,对于同步调用,只需使用
    q
    ,而不是
    q.sendSync
    -也许可以试试吗?根据我的经验,我会发出类似于
    df=q('select From table')
    的调用,然后我会使用索引逐行遍历结果。我会尝试这样做
    df = q.sendSync('select from quote_flat where date within (2019.08.14;2019.08.14), amendment_no = (max;amendment_no)fby quote_id')
    
    df = q.sendSync('{select from quote_flat where date within (2019.08.14;2019.08.14), amendment_no = (max;amendment_no)fby quote_id}[]')