Package: python-monetdb
IntroductionThis is the new native python client API.  This API is cross-platform,
and doesn’t depend on any monetdb libraries.  It has support for
python 2.5+ and is Python DBAPI 2.0 compatible.DEPRECATION WARNINGpython-monetdb is replaced bypymonetdb. python-monetdb won’t
receive any more updates. Please switch to pymonetdb, which should
be a drop-in replacement. Only change your import statement fromimport monetdbtoimport pymonetdbInstallationTo install the MonetDB python API run the following command from the
python source directory:# python setup.py installThat’s all, now you are ready to start using the API.DocumentationThe python code is well documented, so if you need to find
documentation you should have a look at the source code.  Below is an
interactive example on how to use the monetdb SQL API which should get
you started quite fast.Running the test suiteInstall tox and run tox in the root.You can control the testing behavior using environment variables:* MAPIPORT - what port is MonetDB running? _50000_ by default
* TSTHOSTNAME -  where is MonetDB running? _localhost_ by default
* TSTPASSPHRASE - what passphrase to test control command? _testdb_ by default
* TSTDB -  what database to use for testing? _demo_ by default
* TSTUSERNAME - username, _monetdb_ by default
* TSTPASSWORD - password, _monetdb_ by defaultNote that you first need to create and start a monetdb database. Also if you
want to run the control tests you need to set a passphrase and set control=true.ExamplesThere are some examples in the ‘examples’ folder, but here are is a
line by line example of the SQL API:> # import the SQL module
> import monetdb.sql
>
> # set up a connection. arguments below are the defaults
> connection = monetdb.sql.connect(username="monetdb", password="monetdb", hostname="localhost", database="demo")
>
> # create a cursor
> cursor = connection.cursor()
>
> # increase the rows fetched to increase performance (optional)
> cursor.arraysize = 100
>
> # execute a query (return the number of rows to fetch)
> cursor.execute('SELECT * FROM tables')
26
>
> # fetch only one row
> cursor.fetchone()
[1062, 'schemas', 1061, None, 0, True, 0, 0]
>
> # fetch the remaining rows
> cursor.fetchall()
[[1067, 'types', 1061, None, 0, True, 0, 0],
 [1076, 'functions', 1061, None, 0, True, 0, 0],
 [1085, 'args', 1061, None, 0, True, 0, 0],
 [1093, 'sequences', 1061, None, 0, True, 0, 0],
 [1103, 'dependencies', 1061, None, 0, True, 0, 0],
 [1107, 'connections', 1061, None, 0, True, 0, 0],
 [1116, '_tables', 1061, None, 0, True, 0, 0],
 ...
 [4141, 'user_role', 1061, None, 0, True, 0, 0],
 [4144, 'auths', 1061, None, 0, True, 0, 0],
 [4148, 'privileges', 1061, None, 0, True, 0, 0]]
>
> # Show the table meta data
> cursor.description
[('id', 'int', 4, 4, None, None, None),
 ('name', 'varchar', 12, 12, None, None, None),
 ('schema_id', 'int', 4, 4, None, None, None),
 ('query', 'varchar', 168, 168, None, None, None),
 ('type', 'smallint', 1, 1, None, None, None),
 ('system', 'boolean', 5, 5, None, None, None),
 ('commit_action', 'smallint', 1, 1, None, None, None),
 ('temporary', 'tinyint', 1, 1, None, None, None)]If you would like to communicate with the database at a lower level
you can use the MAPI library:> from monetdb import mapi
> server = mapi.Server()
> server.connect(hostname="localhost", port=50000, username="monetdb", password="monetdb", database="demo", language="sql")
> server.cmd("sSELECT * FROM tables;")
...