Python Database API interface: Difference between revisions
From University Map Wiki
Jump to navigationJump to search
(Update to ver 1.0) |
(Update to v2) |
||
Line 1: | Line 1: | ||
There is an (experimental) Python interface to the Database API which may make working with the API from Python a little easier. The [[Media:Ucammap- | There is an (experimental) Python interface to the Database API which may make working with the API from Python a little easier. The [[Media:Ucammap-2.0.tar.gz|current version is available here]]. | ||
Note that while the distribution is really called 'ucammap' this wiki will upper-case the initial 'U' in the name of the distributed file - adapt the installation instructions accordingly. | Note that while the distribution is really called 'ucammap' this wiki will upper-case the initial 'U' in the name of the distributed file - adapt the installation instructions accordingly. | ||
Line 9: | Line 9: | ||
========================= | ========================= | ||
This is a Python 3 interface to the database API to the University of | This is a Python (>=2.6, or 3) interface to the database API to the | ||
Cambridge Map. The underlying API is described at | University of Cambridge Map. The underlying API is described at | ||
https://wiki.cam.ac.uk/university-map/The_Database_API | https://wiki.cam.ac.uk/university-map/The_Database_API | ||
Line 25: | Line 25: | ||
python3 setup.py install | python3 setup.py install | ||
Substitute <ver> as necessary | Substitute <ver> as necessary. | ||
Use | Use | ||
--- | --- | ||
The code contains extensive in-line documentation so you may want to | The code contains extensive in-line documentation so you may want to | ||
Line 79: | Line 74: | ||
distribution as example.py): | distribution as example.py): | ||
#!/usr/bin/ | #!/usr/bin/python | ||
import ucammap | import ucammap | ||
Line 94: | Line 89: | ||
print(" " + t.capitalize() + ":") | print(" " + t.capitalize() + ":") | ||
for i in result.filtered_info(t): | for i in result.filtered_info(t): | ||
print(" ", i.value) | if i.value: | ||
print(" ", i.value) | |||
print() | print() | ||
</nowiki></pre> | </nowiki></pre> |
Revision as of 14:37, 3 October 2013
There is an (experimental) Python interface to the Database API which may make working with the API from Python a little easier. The current version is available here.
Note that while the distribution is really called 'ucammap' this wiki will upper-case the initial 'U' in the name of the distributed file - adapt the installation instructions accordingly.
Here is the README.txt file from the distribution:
University Map Python API ========================= This is a Python (>=2.6, or 3) interface to the database API to the University of Cambridge Map. The underlying API is described at https://wiki.cam.ac.uk/university-map/The_Database_API Installation ------------ Unpack the distribution, move into the directory created, and run setup.py. You will probably need privileged (i.e. root) access to run setup.py. tar zxf ucammap-<ver>.tar.gz cd ucammap-<ver> python3 setup.py install Substitute <ver> as necessary. Use --- The code contains extensive in-line documentation so you may want to look at that - in the source, via the built in Python help() function, or in the ucammap.pydoc file included in the distribution. The interface is implemented by the 'ucammap' module which should be imported in the usual way. The primary (close to only) way to use this is to create a ucammap.API object and then to call its search() method. All keyword arguments to search() are converted to URL parameters and included in a call to the underlying interface - see the API documentation for more detail of what's possible. The result is a (possibly empty) sequence of objects representing the selected entities. Information about institutions, sites, buildings, etc. are represented by ucammap.Entity objects, and contact information records and addresses by ucammap.Info and ucammap.Address objects. ucammap.API objects also provide an inflate() method to retrieve a full copy of an Entity object based on a partial one. The API class uses the standard logging module (at 'info' and 'debug') to track the retrieval of API data. Access to information stored in Entity objects is available via attributes named after the coresponding keys described in the API. These return either simple values (string, integer, float, boolean), single instances of other ucammap objects, or possibably-empty sequences of other objects. Entity objects provide various convinience utility methods, such as ucammap.Entity.sort_name() which returns the entity's name in a form suitable for use in sorted lists. ucammap.Info objects, representing a single row of contact information, make information available via the attributes 'type' and 'value', sometimes suplimented by 'role' and 'attributes'. Values are either strings or ucammap.Address objects. ucammap.Address objects provide methods for extracting address information in various formats. Supported attributes that have no value in a particular object return None for simple values or empty sequences. The following provides a simple demonstration (also included in the distribution as example.py): #!/usr/bin/python import ucammap import logging logging.basicConfig(level=logging.INFO) database = ucammap.API() results = database.search(q = 'computing') for result in results: print(result.full_name()) for t in result.info_types(): print(" " + t.capitalize() + ":") for i in result.filtered_info(t): if i.value: print(" ", i.value) print()