Skip to content

Commit 5549c9e

Browse files
committed
Fix typos and errors in the documentation
1 parent 2181ffa commit 5549c9e

4 files changed

Lines changed: 145 additions & 154 deletions

File tree

docs/main.de.html

Lines changed: 49 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -23,38 +23,34 @@ <h1 class="title">Benutzeranleitung für DBUtils</h1>
2323
<li><p><a class="reference internal" href="#zusammenfassung" id="toc-entry-1">Zusammenfassung</a></p></li>
2424
<li><p><a class="reference internal" href="#module" id="toc-entry-2">Module</a></p></li>
2525
<li><p><a class="reference internal" href="#download" id="toc-entry-3">Download</a></p></li>
26-
<li><p><a class="reference internal" href="#installation" id="toc-entry-4">Installation</a></p>
26+
<li><p><a class="reference internal" href="#installation" id="toc-entry-4">Installation</a></p></li>
27+
<li><p><a class="reference internal" href="#anforderungen" id="toc-entry-5">Anforderungen</a></p></li>
28+
<li><p><a class="reference internal" href="#funktionalitat" id="toc-entry-6">Funktionalität</a></p>
2729
<ul>
28-
<li><p><a class="reference internal" href="#installation-1" id="toc-entry-5">Installation</a></p></li>
30+
<li><p><a class="reference internal" href="#simplepooleddb-simple-pooled-db" id="toc-entry-7">SimplePooledDB (simple_pooled_db)</a></p></li>
31+
<li><p><a class="reference internal" href="#steadydbconnection-steady-db" id="toc-entry-8">SteadyDBConnection (steady_db)</a></p></li>
32+
<li><p><a class="reference internal" href="#persistentdb-persistent-db" id="toc-entry-9">PersistentDB (persistent_db)</a></p></li>
33+
<li><p><a class="reference internal" href="#pooleddb-pooled-db" id="toc-entry-10">PooledDB (pooled_db)</a></p></li>
34+
<li><p><a class="reference internal" href="#die-qual-der-wahl" id="toc-entry-11">Die Qual der Wahl</a></p></li>
2935
</ul>
3036
</li>
31-
<li><p><a class="reference internal" href="#anforderungen" id="toc-entry-6">Anforderungen</a></p></li>
32-
<li><p><a class="reference internal" href="#funktionalitat" id="toc-entry-7">Funktionalität</a></p>
37+
<li><p><a class="reference internal" href="#benutzung" id="toc-entry-12">Benutzung</a></p>
3338
<ul>
34-
<li><p><a class="reference internal" href="#simplepooleddb-simple-pooled-db" id="toc-entry-8">SimplePooledDB (simple_pooled_db)</a></p></li>
35-
<li><p><a class="reference internal" href="#steadydbconnection-steady-db" id="toc-entry-9">SteadyDBConnection (steady_db)</a></p></li>
36-
<li><p><a class="reference internal" href="#persistentdb-persistent-db" id="toc-entry-10">PersistentDB (persistent_db)</a></p></li>
37-
<li><p><a class="reference internal" href="#pooleddb-pooled-db" id="toc-entry-11">PooledDB (pooled_db)</a></p></li>
38-
<li><p><a class="reference internal" href="#die-qual-der-wahl" id="toc-entry-12">Die Qual der Wahl</a></p></li>
39+
<li><p><a class="reference internal" href="#persistentdb-persistent-db-1" id="toc-entry-13">PersistentDB (persistent_db)</a></p></li>
40+
<li><p><a class="reference internal" href="#pooleddb-pooled-db-1" id="toc-entry-14">PooledDB (pooled_db)</a></p></li>
3941
</ul>
4042
</li>
41-
<li><p><a class="reference internal" href="#benutzung" id="toc-entry-13">Benutzung</a></p>
43+
<li><p><a class="reference internal" href="#besonderheiten-bei-der-benutzung" id="toc-entry-15">Besonderheiten bei der Benutzung</a></p>
4244
<ul>
43-
<li><p><a class="reference internal" href="#persistentdb-persistent-db-1" id="toc-entry-14">PersistentDB (persistent_db)</a></p></li>
44-
<li><p><a class="reference internal" href="#pooleddb-pooled-db-1" id="toc-entry-15">PooledDB (pooled_db)</a></p></li>
45+
<li><p><a class="reference internal" href="#steuerung-der-ausfallsicherung" id="toc-entry-16">Steuerung der Ausfallsicherung</a></p></li>
4546
</ul>
4647
</li>
47-
<li><p><a class="reference internal" href="#besonderheiten-bei-der-benutzung" id="toc-entry-16">Besonderheiten bei der Benutzung</a></p>
48-
<ul>
49-
<li><p><a class="reference internal" href="#steuerung-der-ausfallsicherung" id="toc-entry-17">Steuerung der Ausfallsicherung</a></p></li>
50-
</ul>
51-
</li>
52-
<li><p><a class="reference internal" href="#anmerkungen" id="toc-entry-18">Anmerkungen</a></p></li>
53-
<li><p><a class="reference internal" href="#zukunft" id="toc-entry-19">Zukunft</a></p></li>
54-
<li><p><a class="reference internal" href="#fehlermeldungen-und-feedback" id="toc-entry-20">Fehlermeldungen und Feedback</a></p></li>
55-
<li><p><a class="reference internal" href="#links" id="toc-entry-21">Links</a></p></li>
56-
<li><p><a class="reference internal" href="#autoren" id="toc-entry-22">Autoren</a></p></li>
57-
<li><p><a class="reference internal" href="#copyright-und-lizenz" id="toc-entry-23">Copyright und Lizenz</a></p></li>
48+
<li><p><a class="reference internal" href="#anmerkungen" id="toc-entry-17">Anmerkungen</a></p></li>
49+
<li><p><a class="reference internal" href="#zukunft" id="toc-entry-18">Zukunft</a></p></li>
50+
<li><p><a class="reference internal" href="#fehlermeldungen-und-feedback" id="toc-entry-19">Fehlermeldungen und Feedback</a></p></li>
51+
<li><p><a class="reference internal" href="#links" id="toc-entry-20">Links</a></p></li>
52+
<li><p><a class="reference internal" href="#autoren" id="toc-entry-21">Autoren</a></p></li>
53+
<li><p><a class="reference internal" href="#copyright-und-lizenz" id="toc-entry-22">Copyright und Lizenz</a></p></li>
5854
</ul>
5955
</nav>
6056
<section id="zusammenfassung">
@@ -118,7 +114,7 @@ <h2>Module</h2>
118114
<img alt="dependencies_db.png" src="dependencies_db.png" />
119115
<p>Die Abhängigkeiten der Module in der Variante für den klassischen
120116
PyGreSQL-Adapter sehen ähnlich aus:</p>
121-
<img alt="depdependencies_pg.png" src="depdependencies_pg.png" />
117+
<img alt="dependencies_pg.png" src="dependencies_pg.png" />
122118
</section>
123119
<section id="download">
124120
<h2>Download</h2>
@@ -130,15 +126,12 @@ <h2>Download</h2>
130126
</section>
131127
<section id="installation">
132128
<h2>Installation</h2>
133-
<section id="installation-1">
134-
<h3>Installation</h3>
135129
<p>Das Paket kann auf die übliche Weise installiert werden:</p>
136130
<pre class="literal-block">python setup.py install</pre>
137131
<p>Noch einfacher ist, das Paket in einem Schritt mit <a class="reference external" href="https://pip.pypa.io/">pip</a> automatisch
138132
herunterzuladen und zu installieren:</p>
139133
<pre class="literal-block">pip install DBUtils</pre>
140134
</section>
141-
</section>
142135
<section id="anforderungen">
143136
<h2>Anforderungen</h2>
144137
<p>DBUtils unterstützt die <a class="reference external" href="https://www.python.org">Python</a> Versionen 3.7 bis 3.14.</p>
@@ -152,7 +145,7 @@ <h2>Funktionalität</h2>
152145
<p>Dieser Abschnitt verwendet nur die Bezeichnungen der DB-API-2-Variante, aber
153146
Entsprechendes gilt auch für die PyGreSQL-Variante.</p>
154147
<p>DBUtils installiert sich als Paket <span class="docutils literal">dbutils</span>, das alle hier beschriebenen
155-
Module enthält. Jedes dieser Modul enthält im Wesentlichen eine Klasse, die
148+
Module enthält. Jedes dieser Module enthält im Wesentlichen eine Klasse, die
156149
einen analogen Namen trägt und die jeweilige Funktionalität bereitstellt.
157150
So enthält z.B. das Modul <span class="docutils literal">dbutils.pooled_db</span> die Klasse <span class="docutils literal">PooledDB</span>.</p>
158151
<section id="simplepooleddb-simple-pooled-db">
@@ -170,12 +163,12 @@ <h3>SimplePooledDB (simple_pooled_db)</h3>
170163
<section id="steadydbconnection-steady-db">
171164
<h3>SteadyDBConnection (steady_db)</h3>
172165
<p>Die Klasse <span class="docutils literal">SteadyDBConnection</span> im Modul <span class="docutils literal">dbutils.steady_db</span> stellt
173-
&quot;gehärtete&quot; Datenbankverbindungen bereit, denen gewöhnlichen Verbindungen
166+
&quot;gehärtete&quot; Datenbankverbindungen bereit, denen gewöhnliche Verbindungen
174167
eines DB-API-2-Datenbankadapters zugrunde liegen. Eine &quot;gehärtete&quot; Verbindung
175168
wird bei Zugriff automatisch, ohne dass die Anwendung dies bemerkt, wieder
176169
geöffnet, wenn sie geschlossen wurde, die Datenbankverbindung unterbrochen
177170
wurde, oder wenn sie öfter als ein optionales Limit genutzt wurde.</p>
178-
<p>Ein typisches Beispiel wo dies benötig wird, ist, wenn die Datenbank neu
171+
<p>Ein typisches Beispiel, wo dies benötigt wird, ist, wenn die Datenbank neu
179172
gestartet wurde, während Ihre Anwendung immer noch läuft und Verbindungen
180173
zur Datenbank offen hat, oder wenn Ihre Anwendung auf eine entfernte Datenbank
181174
über ein Netzwerk zugreift, das durch eine Firewall geschützt ist, und die
@@ -186,7 +179,7 @@ <h3>SteadyDBConnection (steady_db)</h3>
186179
<section id="persistentdb-persistent-db">
187180
<h3>PersistentDB (persistent_db)</h3>
188181
<p>Die Klasse <span class="docutils literal">PersistentDB</span> im Modul <span class="docutils literal">dbutils.persistent_db</span> stellt
189-
gehärtete, thread-affine, persistente Datenbankverbindungen zur Verfügung,
182+
gehärtete, thread-affine, persistente Datenbankverbindungen zur Verfügung,
190183
unter Benutzung eines beliebigen DB-API-2-Datenbankadapters. Mit &quot;thread-affin&quot;
191184
und &quot;persistent&quot; ist hierbei gemeint, dass die einzelnen Datenbankverbindungen
192185
den jeweiligen Threads fest zugeordnet bleiben und während der Laufzeit des
@@ -223,7 +216,7 @@ <h3>PooledDB (pooled_db)</h3>
223216
den verschiedenen Threads beliebig zuteilen. Dies geschieht standardmäßig, wenn
224217
Sie den Verbindungspool mit einem positiven Wert für <span class="docutils literal">maxshared</span> einrichten
225218
und der zugrunde liegende DB-API-2-Datenbankadapter auf der Verbindungsebene
226-
thread-sicher ist, aber sie können auch dedizierte Datenbankverbindungen
219+
thread-sicher ist, aber Sie können auch dedizierte Datenbankverbindungen
227220
anfordern, die nicht von anderen Threads verwendet werden sollen. Neben dem
228221
Pool gemeinsam genutzter Datenbankverbindungen (&quot;shared pool&quot;) können Sie auch
229222
einen Pool von mindestens <span class="docutils literal">mincached</span> und höchstens <span class="docutils literal">maxcached</span> inaktiven
@@ -275,7 +268,7 @@ <h2>Benutzung</h2>
275268
<h3>PersistentDB (persistent_db)</h3>
276269
<p>Wenn Sie das <span class="docutils literal">persistent_db</span>-Modul einsetzen möchten, müssen Sie zuerst einen
277270
Generator für die von Ihnen gewünschte Art von Datenbankverbindungen einrichten,
278-
indem Sie eine Instanz der Klasse <span class="docutils literal">persistent_db</span> erzeugen, wobei Sie folgende
271+
indem Sie eine Instanz der Klasse <span class="docutils literal">PersistentDB</span> erzeugen, wobei Sie folgende
279272
Parameter angeben müssen:</p>
280273
<ul>
281274
<li><p><span class="docutils literal">creator</span>: entweder eine Funktion, die neue DB-API-2-Verbindungen
@@ -334,7 +327,7 @@ <h3>PersistentDB (persistent_db)</h3>
334327
<p>Bitte beachten Sie, dass Transaktionen explizit durch Aufruf der Methode
335328
<span class="docutils literal">begin()</span> eingeleitet werden müssen. Hierdurch wird sichergestellt, dass
336329
das transparente Neueröffnen von Verbindungen bis zum Ende der Transaktion
337-
ausgesetzt wird, und dass die Verbindung zurückgerollt wird, before sie vom
330+
ausgesetzt wird, und dass die Verbindung zurückgerollt wird, bevor sie vom
338331
gleichen Thread erneut benutzt wird.</p>
339332
</aside>
340333
<p>Das Holen einer Verbindung kann etwas beschleunigt werden, indem man den
@@ -347,22 +340,22 @@ <h3>PersistentDB (persistent_db)</h3>
347340
<h3>PooledDB (pooled_db)</h3>
348341
<p>Wenn Sie das <span class="docutils literal">pooled_db</span>-Modul einsetzen möchten, müssen Sie zuerst einen
349342
Pool für die von Ihnen gewünschte Art von Datenbankverbindungen einrichten,
350-
indem Sie eine Instanz der Klasse <span class="docutils literal">pooled_db</span> erzeugen, wobei Sie folgende
343+
indem Sie eine Instanz der Klasse <span class="docutils literal">PooledDB</span> erzeugen, wobei Sie folgende
351344
Parameter angeben müssen:</p>
352345
<ul>
353346
<li><p><span class="docutils literal">creator</span>: entweder eine Funktion, die neue DB-API-2-Verbindungen
354347
erzeugt, oder ein DB-API-2-Datenbankadapter-Modul</p></li>
355-
<li><p><span class="docutils literal">mincached</span> : die anfängliche Anzahl inaktiver Verbindungen, die auf
348+
<li><p><span class="docutils literal">mincached</span>: die anfängliche Anzahl inaktiver Verbindungen, die auf
356349
Vorrat gehalten werden sollen (der Standardwert <span class="docutils literal">0</span> bedeutet, dass beim
357350
Start keine Verbindungen geöffnet werden)</p></li>
358351
<li><p><span class="docutils literal">maxcached</span>: Obergrenze für die Anzahl inaktiver Verbindungen, die auf
359352
Vorrat gehalten werden sollen (der Standardwert <span class="docutils literal">0</span> oder <span class="docutils literal">None</span> bedeutet
360353
unbegrenzte Größe des Vorratsspeichers)</p></li>
361-
<li><p><span class="docutils literal">maxshared</span>: Obergrenze für die Anzahl gemeinsam genutzer Verbindungen
354+
<li><p><span class="docutils literal">maxshared</span>: Obergrenze für die Anzahl gemeinsam genutzter Verbindungen
362355
(der Standardwert <span class="docutils literal">0</span> oder <span class="docutils literal">None</span> bedeutet, dass alle Verbindungen
363356
dediziert sind)</p>
364-
<p>Wenn diese Obergrenze erreicht wird, werden Verbindungen wiederverwendet,
365-
wenn diese als wiederverwendbar angefordert werden.</p>
357+
<p>Wenn diese Obergrenze erreicht wird, werden Verbindungen gemeinsam genutzt,
358+
sofern diese als gemeinsam nutzbar angefordert werden.</p>
366359
</li>
367360
<li><p><span class="docutils literal">maxconnections</span>: Obergrenze für die Anzahl an Datenbankverbindungen,
368361
die insgesamt überhaupt erlaubt werden sollen (der Standardwert <span class="docutils literal">0</span>
@@ -426,18 +419,21 @@ <h3>PooledDB (pooled_db)</h3>
426419
<p>Wenn Sie die Datenbankverbindung nicht mehr benötigen, sollten Sie diese sofort
427420
wieder mit <span class="docutils literal">db.close()</span> an den Pool zurückgeben. Sie können auf die gleiche
428421
Weise eine neue Verbindung erhalten.</p>
429-
<p><em>Warnung:</em> In einer Multithread-Umgebung benutzen Sie niemals:</p>
422+
<aside class="admonition warning">
423+
<p class="admonition-title">Warnung</p>
424+
<p>In einer Multithread-Umgebung benutzen Sie niemals:</p>
430425
<pre class="literal-block">pool.connection().cursor().execute(...)</pre>
431-
<p>Dies würde die Datenbankverbindung zu früh zur Wiederverwendung zurückgeben,
432-
was fatale Folgen haben könnte, wenn die Verbindungen nicht thread-sicher sind.
433-
Stellen Sie sicher, dass die Verbindungsobjekte so lange vorhanden sind, wie
434-
sie gebraucht werden, etwa so:</p>
426+
<p>Dies würde die Datenbankverbindung zu früh zur Wiederverwendung
427+
zurückgeben, was fatale Folgen haben könnte, wenn die Verbindungen nicht
428+
thread-sicher sind. Stellen Sie sicher, dass die Verbindungsobjekte so
429+
lange vorhanden sind, wie sie gebraucht werden, etwa so:</p>
435430
<pre class="literal-block">db = pool.connection()
436431
cur = db.cursor()
437432
cur.execute(...)
438433
res = cur.fetchone()
439434
cur.close() # oder del cur
440435
db.close() # oder del db</pre>
436+
</aside>
441437
<p>Sie können dies auch durch Verwendung von Kontext-Managern vereinfachen:</p>
442438
<pre class="literal-block">with pool.connection() as db:
443439
with db.cursor() as cur:
@@ -456,19 +452,19 @@ <h3>PooledDB (pooled_db)</h3>
456452
</section>
457453
<section id="besonderheiten-bei-der-benutzung">
458454
<h2>Besonderheiten bei der Benutzung</h2>
459-
<p>Manchmal möchte man Datenbankverbindung besonders vorbereiten, bevor sie
455+
<p>Manchmal möchte man Datenbankverbindungen besonders vorbereiten, bevor sie
460456
von DBUtils verwendet werden, und dies ist nicht immer durch Verwendung
461-
der passenden Parameter möglich. Zum Beispiel kann es <span class="docutils literal">pyodb</span> erfordern,
457+
der passenden Parameter möglich. Zum Beispiel kann es <span class="docutils literal">pyodbc</span> erfordern,
462458
dass man die Methode <span class="docutils literal">setencoding()</span> der Datenbankverbindung aufruft.
463459
Sie können dies erreichen, indem Sie eine modifizierte Version der
464460
Funktion <span class="docutils literal">connect()</span> verwenden und diese als <span class="docutils literal">creator</span> (dem ersten
465461
Argument) an <span class="docutils literal">PersistentDB</span> oder <span class="docutils literal">PooledDB</span> übergeben, etwa so:</p>
466-
<pre class="literal-block">from pyodbc import connect
462+
<pre class="literal-block">import pyodbc
467463
from dbutils.pooled_db import PooledDB
468464

469465
def creator():
470-
con = connect(...)
471-
con.setdecoding(...)
466+
con = pyodbc.connect(...)
467+
con.setencoding(...)
472468
return con
473469

474470
creator.dbapi = pyodbc
@@ -549,9 +545,9 @@ <h2>Anmerkungen</h2>
549545
im Kontext der Kindprozesse des Webservers läuft. Wenn Sie also das
550546
<span class="docutils literal">pooled_db</span>-Modul einsetzen, und mehrere dieser Kindprozesse laufen, dann
551547
werden Sie ebenso viele Pools mit Datenbankverbindungen erhalten. Wenn diese
552-
Prozesse viele Threads laufen lassen, dann mag dies eine sinnvoller Ansatz
548+
Prozesse viele Threads laufen lassen, dann mag dies ein sinnvoller Ansatz
553549
sein, wenn aber diese Prozesse nicht mehr als einen Worker-Thread starten,
554-
wie im Fall des Multi-Processing Moduls &quot;prefork&quot; für den Apache-Webserver,
550+
wie im Fall des Multi-Processing-Moduls &quot;prefork&quot; für den Apache-Webserver,
555551
dann sollten Sie auf eine Middleware für das Connection-Pooling zurückgreifen,
556552
die Multi-Processing unterstützt, wie zum Beispiel <a class="reference external" href="https://www.pgpool.net/">pgpool</a> oder <a class="reference external" href="https://pgbouncer.github.io/">pgbouncer</a>
557553
für die PostgreSQL-Datenbank.</p>
@@ -572,7 +568,7 @@ <h2>Zukunft</h2>
572568
bemerken, weil erst dann die unterbrochenen Datenbankverbindungen entdeckt
573569
würden und sich der Pool langsam wieder neu aufbaut. Mit dem Monitor-Thread
574570
würde dies schon während der Nacht passieren, kurz nach der Unterbrechung.
575-
Der Monitor-Thread könnte auch so konfiguriert werden, dass er überhaupt
571+
Der Monitor-Thread könnte auch so konfiguriert werden, dass er generell
576572
täglich den Verbindungspool erneuert, kurz bevor die Benutzer erscheinen.</p></li>
577573
<li><p>Optional sollten Benutzung, schlechte Verbindungen und Überschreitung von
578574
Obergrenzen in Logs gespeichert werden können.</p></li>
@@ -592,7 +588,7 @@ <h2>Links</h2>
592588
<li><p><a class="reference external" href="https://webwareforpython.github.io/w4py/">Webware for Python</a> Framework</p></li>
593589
<li><p>Python <a class="reference external" href="https://www.python.org/dev/peps/pep-0249/">DB-API 2</a></p></li>
594590
<li><p><a class="reference external" href="https://www.postgresql.org/">PostgreSQL</a> Datenbank</p></li>
595-
<li><p><a class="reference external" href="https://www.pygresql.org/">PyGreSQL</a> Python-Adapter for PostgreSQL</p></li>
591+
<li><p><a class="reference external" href="https://www.pygresql.org/">PyGreSQL</a> Python-Adapter für PostgreSQL</p></li>
596592
<li><p><a class="reference external" href="https://www.pgpool.net/">pgpool</a> Middleware für Connection-Pooling mit PostgreSQL</p></li>
597593
<li><p><a class="reference external" href="https://pgbouncer.github.io/">pgbouncer</a> Middleware für Connection-Pooling mit PostgreSQL</p></li>
598594
<li><p><a class="reference external" href="http://sqlobject.org/">SQLObject</a> Objekt-relationaler Mapper</p></li>

0 commit comments

Comments
 (0)