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
- What version of PyKX as you using?
- Can you run this example?
>>> import pykx as kx >>> kx. version’1.6.0’ >>> kx.q(‘trades: (sym:ibm
msftapple
samsung;mcap:2000 4000 9000 6000;ex:nasdaq
nasdaqDAX
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
msftapple
samsung;mcap:2000 4000 9000 6000;ex:nasdaq
nasdaqDAX
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
msftapple
samsung;mcap:2000 4000 9000 6000;ex:nasdaq
nasdaqDAX
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.