cancel
Showing results for 
Search instead for 
Did you mean: 

kx.q.sql('select * from trades') command error

yannlecun
New Contributor

kx.q.sql('select * from trades') 

QError Traceback (most recent call last) Cell File /opt/anaconda3/envs/kx/lib/python3.10/site-packages/pykx/_wrappers.pyx:499, in pykx._wrappers._factory() File /opt/anaconda3/envs/kx/lib/python3.10/site-packages/pykx/_wrappers.pyx:492, in pykx._wrappers.factory()

QError: .s.sp

11 REPLIES 11

rocuinneagain
Valued Contributor
Valued Contributor
  1. What version of PyKX as you using?
  2. Can you run this example?
>>> import pykx as kx
>>> kx.__version__
'1.6.0'
>>> kx.q('trades: ([]sym:`ibm`msft`apple`samsung;mcap:2000 4000 9000 6000;ex:`nasdaq`nasdaq`DAX`Dow)')
pykx.Identity(pykx.q('::'))
>>> kx.q.sql('select * from trades')
pykx.Table(pykx.q('
sym     mcap ex
-------------------
ibm     2000 nasdaq
msft    4000 nasdaq
apple   9000 DAX
samsung 6000 Dow
'))

 

 

>>> import pykx as kx
>>> kx.__version__
'1.6.0'
>>> kx.q('trades: ([]sym:`ibm`msft`apple`samsung;mcap:2000 4000 9000 6000;ex:`nasdaq`nasdaq`DAX`Dow)')
pykx.Identity(pykx.q('::'))
>>> kx.q.sql('select * from trades')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/opt/anaconda3/envs/shift/lib/python3.11/site-packages/pykx/query.py", line 528, in __call__
return self._q('.s.sp', k.CharVector(query), args)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/anaconda3/envs/shift/lib/python3.11/site-packages/pykx/embedded_q.py", line 142, in __call__
return factory(result, False)
^^^^^^^^^^^^^^^^^^^^^^
File "pykx/_wrappers.pyx", line 499, in pykx._wrappers._factory
File "pykx/_wrappers.pyx", line 492, in pykx._wrappers.factory
pykx.exceptions.QError: .s.sp

To use sql library you will need the correct flag in your license:

>>> print('\n'.join(pykx.q('.z.l 4').py().decode().split()))
insights.lib.embedq
insights.lib.pykx
insights.lib.sql     ##<<------ Do you see this?
insights.lib.qlog
insights.lib.kurl
insights.lib.objstore
insights.lib.bigquery
insights.lib.restserver

 

Python 3.10.10 | packaged by conda-forge | (main, Mar 24 2023, 20:12:31) [Clang 14.0.6 ] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import pykx
>>> print('\n'.join(pykx.q('.z.l 4').py().decode().split()))
insights.lib.embedq
insights.lib.pykx
insights.lib.sql
insights.app.rt
insights.lib.qlog
insights.lib.kurl
insights.lib.objstore
insights.lib.bigquery
insights.lib.restserver
>>>

Can you run:

 

>>> pykx.q('\l s.k_')

 

If that still fails check

 

>>> import os
>>> os.environ["QHOME"]
'/home/user/folder/venv/lib/python3.10/site-packages/pykx/lib'
>>> os.listdir(os.environ["QHOME"])
['write.q', 'm64arm', 'p.q', 'l64arm', 'l64', 'kxic.k', '_update_marker', 'bq.q_', 'csvutil.q', 'kurl.q_', 'q.k', 's.k_', 'w64', 'qlog.q_', 'm64', 'objstor.q_', 'read.q', 'rest.q_', 'kurl.sidecar.q_']

 

PyKX 1.6.0 includes a utility for inspecting these common areas pykx.util.debug_environment(detailed=True) 

>>> import pykx
>>> pykx.q('\l s.k_')
pykx.Identity(pykx.q('::'))
>>> import os
>>> os.environ["QHOME"]
'/opt/anaconda3/envs/shift/lib/python3.11/site-packages/pykx/lib'
>>> os.listdir(os.environ["QHOME"])
['objstor.q_', 'q.k', 'rest.q_', 'kurl.sidecar.q_', 'bq.q_', 'm64', 'm64arm', 'kxic.k', 'read.q', 'csvutil.q', 'qlog.q_', 'l64arm', 'kurl.q_', 'w64', 's.k_', 'write.q', 'p.q', 'l64']

As this ran without error you should now be able to use your query:

>>> pykx.q('\l s.k_')
pykx.Identity(pykx.q('::'))

Should now run:

kx.q.sql('select * from trades')

>>> kx.q('trades: ([]sym:`ibm`msft`apple`samsung;mcap:2000 4000 9000 6000;ex:`nasdaq`nasdaq`DAX`Dow)')
pykx.Identity(pykx.q('::'))


>>> kx.q.sql('select * from trades')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/opt/anaconda3/envs/shift/lib/python3.11/site-packages/pykx/query.py", line 528, in __call__
return self._q('.s.sp', k.CharVector(query), args)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/anaconda3/envs/shift/lib/python3.11/site-packages/pykx/embedded_q.py", line 142, in __call__
return factory(result, False)
^^^^^^^^^^^^^^^^^^^^^^
File "pykx/_wrappers.pyx", line 499, in pykx._wrappers._factory
File "pykx/_wrappers.pyx", line 492, in pykx._wrappers.factory
pykx.exceptions.QError: .s.sp


>>> pykx.q('\l s.k_')
pykx.Identity(pykx.q('::'))
>>> kx.q.sql('select * from trades')
pykx.Table(pykx.q('
sym mcap ex
-------------------
ibm 2000 nasdaq
msft 4000 nasdaq
apple 9000 DAX
samsung 6000 Dow
'))

 

Do I need to add "pykx.q('\l s.k_')" command before every kx.q.sql query?

No it only needs to be done once.

 

Normally importing PyKX should run it automatically but for some reason your install does not do this.

Thanks for your help.

yannlecun
New Contributor

missing  '_update_marker'