Python bindings for the pxlib library for reading and writing Paradox databases. The version of pxlib currently exposed by pypxlib is 0.6.5.
pypxlib exposes a high-level API for reading Paradox databases. To use this API, you need the following import:
Get the fields in a table:
Get the number of rows:
Get the first row:
Access a row’s properties:
Iterate over all rows:
There is limited support for modifying tables:
Do note that you must call .save(...)
on the exact Row
object that you modified. That is, the following will not work:
Rows can also be inserted. This is done by passing a tuple of objects to table.insert(...)
. The elements of the tuple must have exactly the types given by the table's .fields
property:
Deleting a row can be done via the del
keyword:
Finally, don't forget to close the table when you are done!
Or use it as a context manager:
pypxlib is esentially a thin wrapper around the pxlib C library. The high-level API described above makes it easy to read tables but offers limited support when it comes to writing tables. If you also need to write to a table, or another more complicated use case, then you can fall back to the ctypes bindings of pxlib exposed by this library:
from pypxlib.pxlib_ctypes import *
pxdoc = PX_new()
PX_open_file(pxdoc, b"test.db")
num_fields = PX_get_num_fields(pxdoc)
print('test.db has %d fields:' % num_fields)
for i in range(num_fields):
field = PX_get_field(pxdoc, i)
print(field.contents.px_fname)
# Close the file:
PX_close(pxdoc)
# Free the memory associated with pxdoc:
PX_delete(pxdoc)
All the PX_...
functions come directly from the list of pxlibs functions. Note that you do not need to call PX_boot()
and PX_shutdown
, as these functions are already called when importing pypxlib
, and via an atexit
handler.
This library was tested on the following platforms:
- Windows 7 (64 bit): 32 and 64 bit Python 2.7.10 and 3.5.0.
- OS X: Python 2.7.10 and 3.4.2.
- Ubuntu 14.04.1 (64bit): Python 2.7.6 and 3.4.0.
The dynamic libraries libpx.so
, pxlib.dll
(pxlib_x64.dll
), and libpx.dylib
were obtained from building pxlib 0.6.5 on Ubuntu 14.0.4.1, Windows 7 and Mac OS X 10.10.5, respectively. See Building pxlib below.
This project contains dynamic libraries for version 0.6.5 of the pxlib library. Here, the steps that were necessary to compile the library on the various operating systems are documented.
sudo brew install intltool
sudo brew link xy
sudo brew install gettext
curl -L 'http://downloads.sourceforge.net/project/pxlib/pxlib/0.6.5/pxlib-0.6.5.tar.gz?ts='`date +%s`'&use_mirror=freefr' -o pxlib-0.6.5.tar.gz
tar -zxvf pxlib-0.6.5.tar.gz
cd pxlib-0.6.5/
echo './configure --prefix=`pwd`/out' | brew sh
sed -i '' 's/#define HAVE_LOCALE_H 1//' config.h
sed -i '' "/^CFLAGS =/ s/$/ -mmacosx-version-min=10.5/" Makefile
make
make install
- Download & install the Microsoft Visual C++ Compiler for Python 2.7.
- Download and install CMake.
- Download the pxlib 0.6.5 sources from http://sourceforge.net/projects/pxlib/files/latest/download?source=files .
- Extract the pxlib sources to two directories for 32 and 64 bit, respectively. Eg.
C:\pxlib-0.6.5-x86
andC:\pxlib-0.6.5-x64
.
- 5. Start the Visual C++ 2008 32-bit Command Prompt, cd to
C:\pxlib-0.6.5-x86
and execute the following commands:
- Repeat step 5. with the 64-bit Command Prompt and
C:\pxlib-0.6.5-x64
. - That's it. You now have the 32 bit dll in
C:\pxlib-0.6.5-x86\pxlib.dll
and the 64 bit dll inC:\pxlib-0.6.5-x64\pxlib.dll
.