KDB-X Python Migration from PyKX
This page outlines the key changes that affect developers moving from PyKX 3.* to KDB-X Python 4.*. It covers updated configuration behavior, new defaults, deprecated options, and important differences in how SQL, threading, and cloud libraries load.
KDB-X and Python integration
KDB-X builds on kdb+ with a modern platform foundation. Get the public preview and full platform details.
KDB-X Python replaces PyKX and now evolves directly alongside the KDB-X platform. New KDB-X features integrate rapidly and completely into the Python library.
-
KDB-X Python operates using KDB-X 0.1.0.
-
Status: actively developed; marked with a
b
tag to indicate beta
KDB-X configuration changes
For a full list of changes and additions in KDB-X, refer to the relase notes. The section below highlights updates that directly impact KDB-X Python:
-
Added
QCFG
configuration option. If the file~/.kx/config
exists, KDB-X uses it by default. -
Updated license lookup behavior. KDB-X no longer checks the current working directory for a license. It now only checks
QLIC
andQHOME
. -
Added
.z.v
to theZContext
which holds initialization values for:version
,QCFG
,QHOME
,QLIC
, andQINIT
.
KDB-X Python configuration changes
Configuration file location
-
Replaced the default config file
.pykx-config
withconfig-pykx
. -
PYKX_CONFIGURATION_LOCATION
now points to a file, not a folder.-
Users can set a custom filename.
-
KDB-X Python searches in this order:
-
PYKX_CONFIGURATION_LOCATION
(if set) -
~/.kx/config-pykx
(if it exists)
-
-
-
KDB-X Python no longer searches
.
or~
for a configuration file.
kx.util.add_to_config
changes
-
Added a
profile
argument to specify the profile that should receive configuration values.-
Defaults to
kx.config.pykx_config_profile
. -
Uses
default
if no profile is set.
-
-
Replaced the folder argument with file.
-
Defaults to
kx.config.pykx_config_location
. -
If unset, creates a new file at
~/.kx/config-pykx
. -
The function no longer adds values to
os.environ
. It writes only to the configuration file.
kx.util.install_q changes
-
Added a
config_file
argument (defaults topykx_config_location
). -
Added a
config_profile
argument (defaults topykx_config_profile
).
Removed or replaced options
-
Removed
PYKX_4_1_ENABLED
configuration option. -
Enabled the
NEP-49
allocator by default to support zero-copy conversions. -
Removed
PYKX_ALLOCATOR
-
Added
PYKX_NO_ALLOCATOR
to allow users to opt out -
Removed
--pykxalloc
(QARGS/q command-line option) -
Added
--pykxnoalloc
as the new opt-out flag
Library loading and command-line changes
Cloud library loading
KDB-X Python no longer loads cloud libraries (kurl
, objstor
, qlog
, sql
) by default when you import the module. These libraries now use an opt-in model to:
-
Speed up imports
-
Prevent errors and warnings for users who don’t need these features
To load a library, explicitly enable it using the appropriate environment variable or QARGS
option (documented below).
Environment variable and QARGS
flag updates
Environment variable changes
-
Removed:
PYKX_NOQCE
-
Added:
PYKX_QCE
(use this to enableQCE
features)
Updated QARGS flags
The following command-line flags have changed from opt-out to opt-in:
Removed flag |
Replacement |
---|---|
|
|
|
|
|
|
|
|
|
|
SQL interface changes
KDB-X now embeds its SQL interface, eliminating the need to load it from an external file like s.k_
.
You can initialize the SQL interface in any of the following ways:
-
Set
QARGS="--qce"
,QARGS="--sql"
, orPYKX_QCE=True
-
From Python, the first call to
kx.q.sql
automatically loads the library. -
From q, call
.s.init[]
or make a query starting withs)
which will automatically load the SQL library on first use.
Important
If your code calls .s
functions directly (for example, .s.e
), make sure you load the SQL interface first using one of the methods above.
Threading behavior
KDB-X no longer sets a default value for secondary threads.
To enable them, use either of the following:
-
Set
QARGS="-s N"
-
Add
s=N
to yourQCFG
file
Next steps
KDB-X Python continues to evolve with the KDB-X platform. For upcoming changes and recent updates, refer to:
Note
KDB-X Python is in beta (b
tag) and under active development. Expect regular updates.