Skip to main content

Python bindings for the pxlib library for reading and writing Paradox databases.

Project description

pypxlib
=======

Python bindings for the `pxlib library`_ for reading and writing Paradox
databases. The version of pxlib currently exposed by pypxlib is 0.6.5.

.. _`pxlib library`: http://pxlib.sourceforge.net/

Usage
=====

pypxlib exposes a high-level API for reading Paradox databases. To use
this API, you need the following import:

.. code:: python

from pypxlib import Table

Get the field names in a table:

.. code:: python

>>> table = Table('data.db')
>>> table.fields
['field1', 'field2', 'field3']

Get the number of rows:

.. code:: python

>>> len(table)
123

Get the first row:

.. code:: python

>>> row = table[0]
>>> row
Row(field1='foo', field2=13, field3=True)

Access a row’s properties:

.. code:: python

>>> row.field1
'foo'
>>> row['field1']
'foo'

Iterate over all rows:

.. code:: python

>>> for row in table:
... print(row)
...
Row(field1='foo', field2=13, field3=True)
Row(field2='bar', field2=87, field3=True)
...

Don’t forget to close the table!

.. code:: python

table = Table('data.db')
try:
# Process the table...
finally:
table.close()

Or use it as a context manager:

.. code:: python

with Table('data.db') as table:
# Process the table...

Access to pxlib via ctypes
--------------------------

pypxlib is esentially a thin wrapper around the pxlib C library. The
high-level API described above makes it easy to *read* 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:

.. code:: python

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.

.. _`list of pxlibs functions`: http://pxlib.sourceforge.net/documentation.php

Dynamic libraries in this repository
====================================

Here is a list of dynamic libraries contained in this repository, and
how they were obtained:

* ``libpx.so``, ``pxlib.dll`` (``pxlib_x64.dll``), ``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.

Building pxlib
==============

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.

Ubuntu 14.04.1 LTS
------------------

.. code:: bash

sudo apt-get update
sudo apt-get install build-essential
wget '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/
./configure
make
sudo make install

OS X 10.10.5
------------

.. code:: bash

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=out' | brew sh
sed -i '' 's/#define HAVE_LOCALE_H 1//' config.h
make
make install

Windows 7
---------

1. Download & install the `Microsoft Visual C++ Compiler for Python 2.7`_.
2. Download and install CMake.
3. Download the pxlib 0.6.5 sources from
``http://sourceforge.net/projects/pxlib/files/latest/download?source=files``.
4. Extract the pxlib sources to *two* directories for 32 and 64 bit,
respectively. Eg. ``C:\pxlib-0.6.5-x86`` and ``C:\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:
.. code:: bash

cmake -D CMAKE_CXX_FLAGS_RELEASE=/MT -DCMAKE_BUILD_TYPE=Release -D PX_HAVE_ICONV=0 -D PX_HAVE_RECODE=0 .
nmake

6. Repeat step 5. with the *64*-bit Command Prompt and ``C:\pxlib-0.6.5-x64``.
7. That's it. You now have the 32 bit dll in ``C:\pxlib-0.6.5-x86\pxlib.dll``
and the 64 bit dll in ``C:\pxlib-0.6.5-x64\pxlib.dll``.

.. _`Microsoft Visual C++ Compiler for Python 2.7`: http://www.microsoft.com/en-us/download/details.aspx?id=44266

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pypxlib-1.1.tar.gz (209.0 kB view details)

Uploaded Source

File details

Details for the file pypxlib-1.1.tar.gz.

File metadata

  • Download URL: pypxlib-1.1.tar.gz
  • Upload date:
  • Size: 209.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for pypxlib-1.1.tar.gz
Algorithm Hash digest
SHA256 b2381223823c9c40931f6b90850df96b7a4bce4d138668d9edfbab18bee1620d
MD5 2e88ff296f91101212895dbce0b2b1ef
BLAKE2b-256 2e33462db0dcc772dce1abb346a79040509a5c24ba50852b78bca773cfc1b122

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page