Page MenuHomec4science

Pyblio.Store.Database-class.html
No OneTemporary

File Metadata

Created
Sat, Jul 5, 12:14

Pyblio.Store.Database-class.html

<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Pyblio.Store.Database</title>
<link rel="stylesheet" href="epydoc.css" type="text/css"></link>
</head>
<body bgcolor="white" text="black" link="blue" vlink="#204080"
alink="#204080">
<!-- =========== START OF NAVBAR =========== -->
<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
<tr valign="center">
<th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="Pyblio-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
<th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
<th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
<th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center">
<p class="nomargin">
pybliographer&nbsp;1.3.3
</p></th></tr></table>
</th>
</tr>
</table>
<table width="100%" cellpadding="0" cellspacing="0">
<tr valign="top">
<td width="100%">
<font size="-1"><b class="breadcrumbs">
<a href="Pyblio-module.html">Package&nbsp;Pyblio</a> ::
<a href="Pyblio.Store-module.html">Module&nbsp;Store</a> ::
Class&nbsp;Database
</b></font></br>
</td>
<td><table cellpadding="0" cellspacing="0">
<tr><td align="right"><font size="-2">[<a href="../private/Pyblio.Store.Database-class.html">show&nbsp;private</a>&nbsp;|&nbsp;hide&nbsp;private]</font></td></tr>
<tr><td align="right"><font size="-2">[<a href="frames.html"target="_top">frames</a>&nbsp;|&nbsp;<a href="Pyblio.Store.Database-class.html" target="_top">no&nbsp;frames</a>]</font></td></tr>
</table></td>
</tr></table>
<!-- =========== START OF CLASS DESCRIPTION =========== -->
<h2 class="class">Type Database</h2>
<pre class="base-tree">
<a href="__builtin__.object-class.html"><code>object</code></a> --+
|
<b>Database</b>
</pre><br />
<dl><dt><b>Known Subclasses:</b></dt>
<dd>
<a href="Pyblio.Adapter.Adapter-class.html"><code>Adapter</code></a>,
<a href="Pyblio.Stores.bsddbstore.Database-class.html"><code>Database</code></a>,
<a href="Pyblio.Stores.filestore.Database-class.html"><code>Database</code></a></dd></dl>
<hr/>
<p>A bibliographic database.</p>
A database behaves like a dictionnary, linking a <a
href="Pyblio.Store.Key-class.html" class="link"><code>key</code></a> with
a <a href="Pyblio.Store.Record-class.html"
class="link"><code>record</code></a>. The records are <b>typed</b>, and
must follow the specifications of a <a href="Pyblio.Schema-module.html"
class="link"><code>Schema</code></a>.
<h1 class="heading">Adding a new record</h1>
To add a new record r to a database db:
<pre class="doctestblock">
<span class="py-src"><span class="py-prompt">&gt;&gt;&gt; </span>record = Record ()
<span class="py-prompt">&gt;&gt;&gt; </span>record [<span class="py-string">'title'</span>] = Attribute.Text (<span class="py-string">'my title'</span>)
&gt;&gt;&gt;<span class="py-keyword"> # ...</span>
<span class="py-prompt">&gt;&gt;&gt; </span>key = db.add (record)</span></pre>
When the record is added, a <a href="Pyblio.Store.Key-class.html"
class="link"><code>key</code></a> is generated which uniquely
references the record.
<h1 class="heading">Accessing a record</h1>
It is possible to use the database as a dictionnary. So, given a key
k:
<pre class="doctestblock">
<span class="py-src"><span class="py-prompt">&gt;&gt;&gt; </span>r = db [k]</span></pre>
Alternatively, one can access all the records in a database in
random order:
<pre class="doctestblock">
<span class="py-src"><span class="py-prompt">&gt;&gt;&gt; </span><span class="py-keyword">for</span> key, record <span class="py-keyword">in</span> db.entries.iteritems ():
<span class="py-prompt">&gt;&gt;&gt; </span> <span class="py-keyword"> # do something with the record...</span></span></pre>
<h1 class="heading">Updating a record</h1>
Simply store the record back once it is updated:
<pre class="doctestblock">
<span class="py-src"><span class="py-prompt">&gt;&gt;&gt; </span>record = db [key]
<span class="py-prompt">&gt;&gt;&gt; </span>...<span class="py-keyword"> # update the record</span>
<span class="py-prompt">&gt;&gt;&gt; </span>db [key] = record</span></pre>
<hr/>
<p><b>Attention:</b> getting a record from the database returns a <i>new copy</i> at each
access. Updating this copy <i>does not</i> change the stored value.
</p>
<p><b>See Also:</b> <a href="Pyblio.Query-module.html"
class="link"><code>queries</code></a>
</p>
<!-- =========== START OF METHOD SUMMARY =========== -->
<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="summary">
<th colspan="2">Method Summary</th></tr>
<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
<td><code><a name="__init__"></a><span class="summary-sig"><span class="summary-sig-name">__init__</span>(<span class=summary-sig-arg>self</span>)</span></code>
</td></tr>
<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
<td><code><span class="summary-sig"><a href="Pyblio.Store.Database-class.html#__getitem__" class="summary-sig-name"><code>__getitem__</code></a>(<span class=summary-sig-arg>self</span>,
<span class=summary-sig-arg>key</span>)</span></code>
<br />
Get a record by key.</td></tr>
<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
<td><code><span class="summary-sig"><a href="Pyblio.Store.Database-class.html#__setitem__" class="summary-sig-name"><code>__setitem__</code></a>(<span class=summary-sig-arg>self</span>,
<span class=summary-sig-arg>key</span>,
<span class=summary-sig-arg>record</span>)</span></code>
<br />
Update a record.</td></tr>
<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
<td><code><span class="summary-sig"><a href="Pyblio.Store.Database-class.html#add" class="summary-sig-name"><code>add</code></a>(<span class=summary-sig-arg>self</span>,
<span class=summary-sig-arg>record</span>,
<span class=summary-sig-arg>key</span>)</span></code>
<br />
Insert a new entry in the database.</td></tr>
<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
<td><code><span class="summary-sig"><a href="Pyblio.Store.Database-class.html#collate" class="summary-sig-name"><code>collate</code></a>(<span class=summary-sig-arg>self</span>,
<span class=summary-sig-arg>rs</span>,
<span class=summary-sig-arg>field</span>)</span></code>
<br />
Partition the result set in a list of sets for every value taken by
the specified field</td></tr>
<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
<td><code><span class="summary-sig"><a href="Pyblio.Store.Database-class.html#has_key" class="summary-sig-name"><code>has_key</code></a>(<span class=summary-sig-arg>self</span>,
<span class=summary-sig-arg>key</span>)</span></code>
<br />
Check for the existence of a key.</td></tr>
<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
<td><code><a name="query"></a><span class="summary-sig"><span class="summary-sig-name">query</span>(<span class=summary-sig-arg>self</span>,
<span class=summary-sig-arg>query</span>,
<span class=summary-sig-arg>permanent</span>)</span></code>
</td></tr>
<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
<td><code><a name="save"></a><span class="summary-sig"><span class="summary-sig-name">save</span>(<span class=summary-sig-arg>self</span>)</span></code>
</td></tr>
<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
<td><code><span class="summary-sig"><a href="Pyblio.Store.Database-class.html#validate" class="summary-sig-name"><code>validate</code></a>(<span class=summary-sig-arg>self</span>,
<span class=summary-sig-arg>entry</span>)</span></code>
<br />
Check an entry for conformance against the Schema.</td></tr>
<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
<td><code><a name="xmlread"></a><span class="summary-sig"><span class="summary-sig-name">xmlread</span>(<span class=summary-sig-arg>self</span>,
<span class=summary-sig-arg>fd</span>)</span></code>
</td></tr>
<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
<td><code><span class="summary-sig"><a href="Pyblio.Store.Database-class.html#xmlwrite" class="summary-sig-name"><code>xmlwrite</code></a>(<span class=summary-sig-arg>self</span>,
<span class=summary-sig-arg>fd</span>)</span></code>
<br />
Output a database in XML format</td></tr>
<tr bgcolor="#e8f0f8" class="group">
<th colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;Inherited from object</th></tr>
<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
<td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__delattr__" class="summary-sig-name"><code>__delattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
<br />
x.__delattr__('name') &lt;==&gt; del x.name</td></tr>
<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
<td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__getattribute__" class="summary-sig-name"><code>__getattribute__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
<br />
x.__getattribute__('name') &lt;==&gt; x.name</td></tr>
<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
<td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__hash__" class="summary-sig-name"><code>__hash__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
<br />
x.__hash__() &lt;==&gt; hash(x)</td></tr>
<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
<td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__new__" class="summary-sig-name"><code>__new__</code></a>(<span class=summary-sig-arg>T</span>,
<span class=summary-sig-arg>S</span>,
<span class="summary-sig-vararg">...</span>)</span></code>
<br />
T.__new__(S, ...) -&gt; a new object with type S, a subtype of T</td></tr>
<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
<td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce__" class="summary-sig-name"><code>__reduce__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
<br />
helper for pickle</td></tr>
<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
<td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__reduce_ex__" class="summary-sig-name"><code>__reduce_ex__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
<br />
helper for pickle</td></tr>
<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
<td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__repr__" class="summary-sig-name"><code>__repr__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
<br />
x.__repr__() &lt;==&gt; repr(x)</td></tr>
<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
<td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__setattr__" class="summary-sig-name"><code>__setattr__</code></a>(<span class="summary-sig-vararg">...</span>)</span></code>
<br />
x.__setattr__('name', value) &lt;==&gt; x.name = value</td></tr>
<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
<td><code><span class="summary-sig"><a href="__builtin__.object-class.html#__str__" class="summary-sig-name"><code>__str__</code></a>(<span class=summary-sig-arg>x</span>)</span></code>
<br />
x.__str__() &lt;==&gt; str(x)</td></tr>
</table><br />
<!-- =========== START OF PROPERTY SUMMARY =========== -->
<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="summary">
<th colspan="2">Property Summary</th></tr>
<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
<td><a name="entries"></a><b><code>entries</code></b></td></tr><tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
<td><a name="txo"></a><b><code>txo</code></b></td></tr></table><br />
<!-- =========== START OF CLASS VARIABLE SUMMARY =========== -->
<table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="summary">
<th colspan="2">Class Variable Summary</th></tr>
<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
<td><a name="entries"></a><b><code>entries</code></b> = <a href="Pyblio.Store.Database-class.html#entries"><code>Pyblio.Store.Database.entries</code></a></td></tr>
<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
<td><b><a href="Pyblio.Store.Database-class.html#rs"><code>rs</code></a></b>: a <a href="Pyblio.Store.ResultSetStore-class.html"
class="link"><code>ResultSetStore</code></a> instance, containing all the
result sets defined on this database.</td></tr>
<tr><td align="right" valign="top" width="15%"><font size="-1">&nbsp;</font></td>
<td><a name="txo"></a><b><code>txo</code></b> = <a href="Pyblio.Store.Database-class.html#txo"><code>Pyblio.Store.Database.txo</code></a></td></tr>
</table><br />
<!-- =========== START OF METHOD DETAILS =========== -->
<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="details">
<th colspan="2">Method Details</th></tr>
</table>
<a name="__getitem__"></a>
<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
<h3><span class="sig"><span class="sig-name">__getitem__</span>(<span class=sig-arg>self</span>,
<span class=sig-arg>key</span>)</span>
<br /><i>(Indexing operator)</i>
</h3>
Get a record by key.
<dl><dt></dt><dd>
<dl><dt><b>Parameters:</b></dt>
<dd><code><b>key</b></code> -
the key of the requested record
<br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
(type=a <a href="Pyblio.Store.Key-class.html"
class="link"><code>Key</code></a>)</i>
</dd>
</dl>
</dd></dl>
</td></tr></table>
<a name="__setitem__"></a>
<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
<h3><span class="sig"><span class="sig-name">__setitem__</span>(<span class=sig-arg>self</span>,
<span class=sig-arg>key</span>,
<span class=sig-arg>record</span>)</span>
<br /><i>(Index assignment operator)</i>
</h3>
<p>Update a record.</p>
Updates a record with a new value.
<dl><dt></dt><dd>
<dl><dt><b>Parameters:</b></dt>
<dd><code><b>key</b></code> -
the record's key
<br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
(type=a <a href="Pyblio.Store.Key-class.html"
class="link"><code>Key</code></a>)</i>
<dd><code><b>record</b></code> -
the new value of the record
<br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
(type=a <a href="Pyblio.Store.Record-class.html"
class="link"><code>Record</code></a>)</i>
</dd>
</dl>
</dd></dl>
</td></tr></table>
<a name="add"></a>
<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
<h3><span class="sig"><span class="sig-name">add</span>(<span class=sig-arg>self</span>,
<span class=sig-arg>record</span>,
<span class=sig-arg>key</span>=<span class=sig-default>None</span>)</span>
</h3>
<p>Insert a new entry in the database.</p>
New entries <b>MUST</b> be added with this method, not via an update
with a hand-made Key.
<dl><dt></dt><dd>
<dl><dt><b>Parameters:</b></dt>
<dd><code><b>record</b></code> -
the new record to add
<br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
(type=a <a href="Pyblio.Store.Record-class.html"
class="link"><code>Record</code></a>)</i>
<dd><code><b>key</b></code> -
only useful for importing an existing database, by
<i>proposing</i> a key choice.
<br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
(type=a <a href="Pyblio.Store.Key-class.html"
class="link"><code>Key</code></a>)</i>
</dd>
</dl>
</dd></dl>
</td></tr></table>
<a name="collate"></a>
<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
<h3><span class="sig"><span class="sig-name">collate</span>(<span class=sig-arg>self</span>,
<span class=sig-arg>rs</span>,
<span class=sig-arg>field</span>)</span>
</h3>
Partition the result set in a list of sets for every value taken by
the specified field
<dl><dt></dt><dd>
</dd></dl>
</td></tr></table>
<a name="has_key"></a>
<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
<h3><span class="sig"><span class="sig-name">has_key</span>(<span class=sig-arg>self</span>,
<span class=sig-arg>key</span>)</span>
</h3>
Check for the existence of a key.
<dl><dt></dt><dd>
<dl><dt><b>Parameters:</b></dt>
<dd><code><b>key</b></code> -
the key to check for
<br /><i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
(type=a <a href="Pyblio.Store.Key-class.html"
class="link"><code>Key</code></a>)</i>
</dd>
</dl>
</dd></dl>
</td></tr></table>
<a name="validate"></a>
<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
<h3><span class="sig"><span class="sig-name">validate</span>(<span class=sig-arg>self</span>,
<span class=sig-arg>entry</span>)</span>
</h3>
Check an entry for conformance against the Schema. This method may
modify the entry to normalize certain fields.
<dl><dt></dt><dd>
</dd></dl>
</td></tr></table>
<a name="xmlwrite"></a>
<table width="100%" class="func-details" bgcolor="#e0e0e0"><tr><td>
<h3><span class="sig"><span class="sig-name">xmlwrite</span>(<span class=sig-arg>self</span>,
<span class=sig-arg>fd</span>)</span>
</h3>
Output a database in XML format
<dl><dt></dt><dd>
</dd></dl>
</td></tr></table>
<br />
<!-- =========== START OF CLASS VARIABLE DETAILS =========== -->
<table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="details">
<th colspan="2">Class Variable Details</th></tr>
</table>
<table width="100%" class="var-details" bgcolor="#e0e0e0"><tr><td>
<a name="rs"></a>
<h3>rs</h3>
a <a href="Pyblio.Store.ResultSetStore-class.html"
class="link"><code>ResultSetStore</code></a> instance, containing all the
result sets defined on this database.
</td></tr></table>
<br />
<!-- =========== START OF NAVBAR =========== -->
<table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0">
<tr valign="center">
<th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="Pyblio-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
<th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="trees.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
<th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="indices.html">Index</a>&nbsp;&nbsp;&nbsp;</th>
<th class="navbar">&nbsp;&nbsp;&nbsp;<a class="navbar" href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center">
<p class="nomargin">
pybliographer&nbsp;1.3.3
</p></th></tr></table>
</th>
</tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td align="left"><font size="-2">Generated by Epydoc 2.1 on Sun Sep 24 23:52:43 2006</font></td>
<td align="right"><a href="http://epydoc.sourceforge.net"
><font size="-2">http://epydoc.sf.net</font></a></td>
</tr>
</table>
</body>
</html>

Event Timeline