-
Notifications
You must be signed in to change notification settings - Fork 10
Expand file tree
/
Copy pathdbm.html
More file actions
860 lines (786 loc) · 68.5 KB
/
Copy pathdbm.html
File metadata and controls
860 lines (786 loc) · 68.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
<!DOCTYPE html>
<html lang="fa" data-content_root="../">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" />
<meta property="og:title" content="dbm --- Interfaces to Unix "databases"" />
<meta property="og:type" content="website" />
<meta property="og:url" content="https://docs.python.org/3/library/dbm.html" />
<meta property="og:site_name" content="Python documentation" />
<meta property="og:description" content="Source code: Lib/dbm/__init__.py dbm is a generic interface to variants of the DBM database: dbm.sqlite3, dbm.gnu, dbm.ndbm. If none of these modules are installed, the slow-but-simple implementati..." />
<meta property="og:image" content="_static/og-image.png" />
<meta property="og:image:alt" content="Python documentation" />
<meta name="description" content="Source code: Lib/dbm/__init__.py dbm is a generic interface to variants of the DBM database: dbm.sqlite3, dbm.gnu, dbm.ndbm. If none of these modules are installed, the slow-but-simple implementati..." />
<meta name="theme-color" content="#3776ab">
<meta property="og:image:width" content="200">
<meta property="og:image:height" content="200">
<title>dbm --- Interfaces to Unix "databases" — مستندات Python3.14.6</title><meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=b86133f3" />
<link rel="stylesheet" type="text/css" href="../_static/classic.css?v=234b1a7c" />
<link rel="stylesheet" type="text/css" href="../_static/pydoctheme.css?v=4365c8fe" />
<link id="pygments_dark_css" media="(prefers-color-scheme: dark)" rel="stylesheet" type="text/css" href="../_static/pygments_dark.css?v=0fc419ee" />
<script src="../_static/documentation_options.js?v=e254dbbb"></script>
<script src="../_static/doctools.js?v=9bcbadda"></script>
<script src="../_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="../_static/translations.js?v=5df48d09"></script>
<script src="../_static/sidebar.js"></script>
<link rel="search" type="application/opensearchdescription+xml"
title="جستجو در مستندات Python3.14.6"
href="../_static/opensearch.xml"/>
<link rel="author" title="درباره این مستندات" href="../about.html" />
<link rel="index" title="فهرست" href="../genindex.html" />
<link rel="search" title="جستجو" href="../search.html" />
<link rel="copyright" title="حق چاپ" href="../copyright.html" />
<link rel="next" title="sqlite3 --- DB-API 2.0 interface for SQLite databases" href="sqlite3.html" />
<link rel="prev" title="marshal --- Internal Python object serialization" href="marshal.html" />
<link rel="canonical" href="https://docs.python.org/3/library/dbm.html">
<style>
@media only screen {
table.full-width-table {
width: 100%;
}
}
</style>
<link rel="stylesheet" href="../_static/pydoctheme_dark.css" media="(prefers-color-scheme: dark)" id="pydoctheme_dark_css">
<link rel="shortcut icon" type="image/png" href="../_static/py.svg">
<script type="text/javascript" src="../_static/copybutton.js"></script>
<script type="text/javascript" src="../_static/menu.js"></script>
<script type="text/javascript" src="../_static/search-focus.js"></script>
<script type="text/javascript" src="../_static/themetoggle.js"></script>
<script type="text/javascript" src="../_static/rtd_switcher.js"></script>
<meta name="readthedocs-addons-api-version" content="1">
</head>
<body>
<div class="mobile-nav">
<input type="checkbox" id="menuToggler" class="toggler__input" aria-controls="navigation"
aria-pressed="false" aria-expanded="false" role="button" aria-label="Menu">
<nav class="nav-content" role="navigation">
<label for="menuToggler" class="toggler__label">
<span></span>
</label>
<span class="nav-items-wrapper">
<a href="https://www.python.org/" class="nav-logo">
<img src="../_static/py.svg" alt="Python logo">
</a>
<span class="version_switcher_placeholder"></span>
<form role="search" class="search" action="../search.html" method="get">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" class="search-icon">
<path fill-rule="nonzero" fill="currentColor" d="M15.5 14h-.79l-.28-.27a6.5 6.5 0 001.48-5.34c-.47-2.78-2.79-5-5.59-5.34a6.505 6.505 0 00-7.27 7.27c.34 2.8 2.56 5.12 5.34 5.59a6.5 6.5 0 005.34-1.48l.27.28v.79l4.25 4.25c.41.41 1.08.41 1.49 0 .41-.41.41-1.08 0-1.49L15.5 14zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"></path>
</svg>
<input placeholder="جستجو سریع" aria-label="جستجو سریع" type="search" name="q">
<input type="submit" value="برو">
</form>
</span>
</nav>
<div class="menu-wrapper">
<nav class="menu" role="navigation" aria-label="main navigation">
<div class="language_switcher_placeholder"></div>
<label class="theme-selector-label">
Theme
<select class="theme-selector" oninput="activateTheme(this.value)">
<option value="auto" selected>Auto</option>
<option value="light">Light</option>
<option value="dark">Dark</option>
</select>
</label>
<div>
<h3><a href="../contents.html">فهرست عناوین</a></h3>
<ul>
<li><a class="reference internal" href="#"><code class="xref py py-mod docutils literal notranslate"><span class="pre">dbm</span></code> --- Interfaces to Unix "databases"</a><ul>
<li><a class="reference internal" href="#module-dbm.sqlite3"><code class="xref py py-mod docutils literal notranslate"><span class="pre">dbm.sqlite3</span></code> --- SQLite backend for dbm</a></li>
<li><a class="reference internal" href="#module-dbm.gnu"><code class="xref py py-mod docutils literal notranslate"><span class="pre">dbm.gnu</span></code> --- GNU database manager</a></li>
<li><a class="reference internal" href="#module-dbm.ndbm"><code class="xref py py-mod docutils literal notranslate"><span class="pre">dbm.ndbm</span></code> --- New Database Manager</a></li>
<li><a class="reference internal" href="#module-dbm.dumb"><code class="xref py py-mod docutils literal notranslate"><span class="pre">dbm.dumb</span></code> --- Portable DBM implementation</a></li>
</ul>
</li>
</ul>
</div>
<div>
<h4>موضوع قبلی</h4>
<p class="topless"><a href="marshal.html"
title="فصل قبلی"><code class="xref py py-mod docutils literal notranslate"><span class="pre">marshal</span></code> --- Internal Python object serialization</a></p>
</div>
<div>
<h4>موضوع بعدی</h4>
<p class="topless"><a href="sqlite3.html"
title="فصل بعدی"><code class="xref py py-mod docutils literal notranslate"><span class="pre">sqlite3</span></code> --- DB-API 2.0 interface for SQLite databases</a></p>
</div>
<script>
document.addEventListener('DOMContentLoaded', () => {
const title = document.querySelector('meta[property="og:title"]').content;
const elements = document.querySelectorAll('.improvepage');
const pageurl = window.location.href.split('?')[0];
elements.forEach(element => {
const url = new URL(element.href.split('?')[0].replace("-nojs", ""));
url.searchParams.set('pagetitle', title);
url.searchParams.set('pageurl', pageurl);
url.searchParams.set('pagesource', "library/dbm.rst");
element.href = url.toString();
});
});
</script>
<div role="note" aria-label="source link">
<h3>این صفحه</h3>
<ul class="this-page-menu">
<li><a href="../bugs.html">گزارش یک اشکال</a></li>
<li><a class="improvepage" href="../improve-page-nojs.html">بهبود این صفحه</a></li>
<li>
<a href="https://github.com/python/cpython/blob/main/Doc/library/dbm.rst?plain=1"
rel="nofollow">نمایش منبع
</a>
</li>
<li>
<a href="https://github.com/python/python-docs-fa/blob/3.14/library/dbm.po?plain=1"
rel="nofollow">نمایش منبع ترجمه</a>
</li>
</ul>
</div>
</nav>
</div>
</div>
<div class="related" role="navigation" aria-label="Related">
<h3>ناوبری</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../genindex.html" title="فهرست کلی"
accesskey="I">فهرست</a></li>
<li class="right" >
<a href="../py-modindex.html" title="نمایه ی ماژول های پایتون"
>ماژول ها</a> |</li>
<li class="right" >
<a href="sqlite3.html" title="sqlite3 --- DB-API 2.0 interface for SQLite databases"
accesskey="N">بعدی</a> |</li>
<li class="right" >
<a href="marshal.html" title="marshal --- Internal Python object serialization"
accesskey="P">قبلی</a> |</li>
<li><img src="../_static/py.svg" alt="Python logo" style="vertical-align: middle; margin-top: -1px"></li>
<li><a href="https://www.python.org/">Python</a> »</li>
<li class="switchers">
<div class="language_switcher_placeholder"></div>
<div class="version_switcher_placeholder"></div>
</li>
<li>
</li>
<li id="cpython-language-and-version">
<a href="../index.html">3.14.6 Documentation</a> »
</li>
<li class="nav-item nav-item-1"><a href="index.html" >The Python Standard Library</a> »</li>
<li class="nav-item nav-item-2"><a href="persistence.html" accesskey="U">Data Persistence</a> »</li>
<li class="nav-item nav-item-this"><a href=""><code class="xref py py-mod docutils literal notranslate"><span class="pre">dbm</span></code> --- Interfaces to Unix "databases"</a></li>
<li class="right">
<div class="inline-search" role="search">
<form class="inline-search" action="../search.html" method="get">
<input placeholder="جستجو سریع" aria-label="جستجو سریع" type="search" name="q" id="search-box">
<input type="submit" value="برو">
</form>
</div>
|
</li>
<li class="right">
<label class="theme-selector-label">
Theme
<select class="theme-selector" oninput="activateTheme(this.value)">
<option value="auto" selected>Auto</option>
<option value="light">Light</option>
<option value="dark">Dark</option>
</select>
</label> |</li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<section id="module-dbm">
<span id="dbm-interfaces-to-unix-databases"></span><h1><code class="xref py py-mod docutils literal notranslate"><span class="pre">dbm</span></code> --- Interfaces to Unix "databases"<a class="headerlink" href="#module-dbm" title="Link to this heading">¶</a></h1>
<p><strong>Source code:</strong> <a class="extlink-source reference external" href="https://github.com/python/cpython/tree/3.14/Lib/dbm/__init__.py">Lib/dbm/__init__.py</a></p>
<hr class="docutils" />
<p><code class="xref py py-mod docutils literal notranslate"><span class="pre">dbm</span></code> is a generic interface to variants of the DBM database:</p>
<ul class="simple">
<li><p><a class="reference internal" href="#module-dbm.sqlite3" title="dbm.sqlite3: SQLite backend for dbm"><code class="xref py py-mod docutils literal notranslate"><span class="pre">dbm.sqlite3</span></code></a></p></li>
<li><p><a class="reference internal" href="#module-dbm.gnu" title="dbm.gnu: GNU database manager"><code class="xref py py-mod docutils literal notranslate"><span class="pre">dbm.gnu</span></code></a></p></li>
<li><p><a class="reference internal" href="#module-dbm.ndbm" title="dbm.ndbm: The New Database Manager"><code class="xref py py-mod docutils literal notranslate"><span class="pre">dbm.ndbm</span></code></a></p></li>
</ul>
<p>If none of these modules are installed, the
slow-but-simple implementation in module <a class="reference internal" href="#module-dbm.dumb" title="dbm.dumb: Portable implementation of the simple DBM interface."><code class="xref py py-mod docutils literal notranslate"><span class="pre">dbm.dumb</span></code></a> will be used. There
is a <a class="reference external" href="https://www.jcea.es/programacion/pybsddb.htm">third party interface</a> to
the Oracle Berkeley DB.</p>
<dl class="py exception">
<dt class="sig sig-object py" id="dbm.error">
<em class="property"><span class="k"><span class="pre">exception</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">dbm.</span></span><span class="sig-name descname"><span class="pre">error</span></span><a class="headerlink" href="#dbm.error" title="Link to this definition">¶</a></dt>
<dd><p>A tuple containing the exceptions that can be raised by each of the supported
modules, with a unique exception also named <a class="reference internal" href="#dbm.error" title="dbm.error"><code class="xref py py-exc docutils literal notranslate"><span class="pre">dbm.error</span></code></a> as the first
item --- the latter is used when <code class="xref py py-exc docutils literal notranslate"><span class="pre">dbm.error</span></code> is raised.</p>
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="dbm.whichdb">
<span class="sig-prename descclassname"><span class="pre">dbm.</span></span><span class="sig-name descname"><span class="pre">whichdb</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">filename</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#dbm.whichdb" title="Link to this definition">¶</a></dt>
<dd><p>This function attempts to guess which of the several simple database modules
available --- <a class="reference internal" href="#module-dbm.sqlite3" title="dbm.sqlite3: SQLite backend for dbm"><code class="xref py py-mod docutils literal notranslate"><span class="pre">dbm.sqlite3</span></code></a>, <a class="reference internal" href="#module-dbm.gnu" title="dbm.gnu: GNU database manager"><code class="xref py py-mod docutils literal notranslate"><span class="pre">dbm.gnu</span></code></a>, <a class="reference internal" href="#module-dbm.ndbm" title="dbm.ndbm: The New Database Manager"><code class="xref py py-mod docutils literal notranslate"><span class="pre">dbm.ndbm</span></code></a>,
or <a class="reference internal" href="#module-dbm.dumb" title="dbm.dumb: Portable implementation of the simple DBM interface."><code class="xref py py-mod docutils literal notranslate"><span class="pre">dbm.dumb</span></code></a> --- should be used to open a given file.</p>
<p>Return one of the following values:</p>
<ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">None</span></code> if the file can't be opened because it's unreadable or doesn't exist</p></li>
<li><p>the empty string (<code class="docutils literal notranslate"><span class="pre">''</span></code>) if the file's format can't be guessed</p></li>
<li><p>a string containing the required module name, such as <code class="docutils literal notranslate"><span class="pre">'dbm.ndbm'</span></code> or <code class="docutils literal notranslate"><span class="pre">'dbm.gnu'</span></code></p></li>
</ul>
<div class="versionchanged">
<p><span class="versionmodified changed">تغییر داده شده در نسخه 3.11: </span><em>filename</em> accepts a <a class="reference internal" href="../glossary.html#term-path-like-object"><span class="xref std std-term">path-like object</span></a>.</p>
</div>
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="dbm.open">
<span class="sig-prename descclassname"><span class="pre">dbm.</span></span><span class="sig-name descname"><span class="pre">open</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">file</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">flag</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'r'</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">mode</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0o666</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#dbm.open" title="Link to this definition">¶</a></dt>
<dd><p>Open a database and return the corresponding database object.</p>
<dl class="field-list simple">
<dt class="field-odd">پارامترها<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>file</strong> (<a class="reference internal" href="../glossary.html#term-path-like-object"><span class="xref std std-term">path-like object</span></a>) -- <p>The database file to open.</p>
<p>If the database file already exists, the <a class="reference internal" href="#dbm.whichdb" title="dbm.whichdb"><code class="xref py py-func docutils literal notranslate"><span class="pre">whichdb()</span></code></a> function is used to
determine its type and the appropriate module is used; if it does not exist,
the first submodule listed above that can be imported is used.</p>
</p></li>
<li><p><strong>flag</strong> (<a class="reference internal" href="stdtypes.html#str" title="str"><em>str</em></a>) -- <ul>
<li><p><code class="docutils literal notranslate"><span class="pre">'r'</span></code> (default): Open existing database for reading only.</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">'w'</span></code>: Open existing database for reading and writing.</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">'c'</span></code>: Open database for reading and writing, creating it if it doesn't exist.</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">'n'</span></code>: Always create a new, empty database, open for reading and writing.</p></li>
</ul>
</p></li>
<li><p><strong>mode</strong> (<a class="reference internal" href="functions.html#int" title="int"><em>int</em></a>) -- The Unix file access mode of the file (default: octal <code class="docutils literal notranslate"><span class="pre">0o666</span></code>),
used only when the database has to be created.</p></li>
</ul>
</dd>
</dl>
<div class="versionchanged">
<p><span class="versionmodified changed">تغییر داده شده در نسخه 3.11: </span><em>file</em> accepts a <a class="reference internal" href="../glossary.html#term-path-like-object"><span class="xref std std-term">path-like object</span></a>.</p>
</div>
</dd></dl>
<p>The object returned by <a class="reference internal" href="#dbm.open" title="dbm.open"><code class="xref py py-func docutils literal notranslate"><span class="pre">open()</span></code></a> supports the basic
functionality of mutable <a class="reference internal" href="../glossary.html#term-mapping"><span class="xref std std-term">mappings</span></a>;
keys and their corresponding values can be stored, retrieved, and
deleted, and iteration, the <a class="reference internal" href="../reference/expressions.html#in"><code class="xref std std-keyword docutils literal notranslate"><span class="pre">in</span></code></a> operator and methods <code class="xref py py-meth docutils literal notranslate"><span class="pre">keys()</span></code>,
<code class="xref py py-meth docutils literal notranslate"><span class="pre">get()</span></code>, <code class="xref py py-meth docutils literal notranslate"><span class="pre">setdefault()</span></code> and <code class="xref py py-meth docutils literal notranslate"><span class="pre">clear()</span></code> are available.
The <code class="xref py py-meth docutils literal notranslate"><span class="pre">keys()</span></code> method returns a list instead of a view object.
The <code class="xref py py-meth docutils literal notranslate"><span class="pre">setdefault()</span></code> method requires two arguments.</p>
<p>Key and values are always stored as <a class="reference internal" href="stdtypes.html#bytes" title="bytes"><code class="xref py py-class docutils literal notranslate"><span class="pre">bytes</span></code></a>. This means that when
strings are used they are implicitly converted to the default encoding before
being stored.</p>
<p>These objects also support being used in a <a class="reference internal" href="../reference/compound_stmts.html#with"><code class="xref std std-keyword docutils literal notranslate"><span class="pre">with</span></code></a> statement, which
will automatically close them when done.</p>
<div class="versionchanged">
<p><span class="versionmodified changed">تغییر داده شده در نسخه 3.2: </span><code class="xref py py-meth docutils literal notranslate"><span class="pre">get()</span></code> and <code class="xref py py-meth docutils literal notranslate"><span class="pre">setdefault()</span></code> methods are now available for all
<code class="xref py py-mod docutils literal notranslate"><span class="pre">dbm</span></code> backends.</p>
</div>
<div class="versionchanged">
<p><span class="versionmodified changed">تغییر داده شده در نسخه 3.4: </span>Added native support for the context management protocol to the objects
returned by <a class="reference internal" href="#dbm.open" title="dbm.open"><code class="xref py py-func docutils literal notranslate"><span class="pre">open()</span></code></a>.</p>
</div>
<div class="versionchanged">
<p><span class="versionmodified changed">تغییر داده شده در نسخه 3.8: </span>Deleting a key from a read-only database raises a database module specific exception
instead of <a class="reference internal" href="exceptions.html#KeyError" title="KeyError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">KeyError</span></code></a>.</p>
</div>
<div class="versionchanged">
<p><span class="versionmodified changed">تغییر داده شده در نسخه 3.13: </span><code class="xref py py-meth docutils literal notranslate"><span class="pre">clear()</span></code> methods are now available for all <code class="xref py py-mod docutils literal notranslate"><span class="pre">dbm</span></code> backends.</p>
</div>
<p>The following example records some hostnames and a corresponding title, and
then prints out the contents of the database:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span><span class="w"> </span><span class="nn">dbm</span>
<span class="c1"># Open database, creating it if necessary.</span>
<span class="k">with</span> <span class="n">dbm</span><span class="o">.</span><span class="n">open</span><span class="p">(</span><span class="s1">'cache'</span><span class="p">,</span> <span class="s1">'c'</span><span class="p">)</span> <span class="k">as</span> <span class="n">db</span><span class="p">:</span>
<span class="c1"># Record some values</span>
<span class="n">db</span><span class="p">[</span><span class="sa">b</span><span class="s1">'hello'</span><span class="p">]</span> <span class="o">=</span> <span class="sa">b</span><span class="s1">'there'</span>
<span class="n">db</span><span class="p">[</span><span class="s1">'www.python.org'</span><span class="p">]</span> <span class="o">=</span> <span class="s1">'Python Website'</span>
<span class="n">db</span><span class="p">[</span><span class="s1">'www.cnn.com'</span><span class="p">]</span> <span class="o">=</span> <span class="s1">'Cable News Network'</span>
<span class="c1"># Note that the keys are considered bytes now.</span>
<span class="k">assert</span> <span class="n">db</span><span class="p">[</span><span class="sa">b</span><span class="s1">'www.python.org'</span><span class="p">]</span> <span class="o">==</span> <span class="sa">b</span><span class="s1">'Python Website'</span>
<span class="c1"># Notice how the value is now in bytes.</span>
<span class="k">assert</span> <span class="n">db</span><span class="p">[</span><span class="s1">'www.cnn.com'</span><span class="p">]</span> <span class="o">==</span> <span class="sa">b</span><span class="s1">'Cable News Network'</span>
<span class="c1"># Often-used methods of the dict interface work too.</span>
<span class="nb">print</span><span class="p">(</span><span class="n">db</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'python.org'</span><span class="p">,</span> <span class="sa">b</span><span class="s1">'not present'</span><span class="p">))</span>
<span class="c1"># Storing a non-string key or value will raise an exception (most</span>
<span class="c1"># likely a TypeError).</span>
<span class="n">db</span><span class="p">[</span><span class="s1">'www.yahoo.com'</span><span class="p">]</span> <span class="o">=</span> <span class="mi">4</span>
<span class="c1"># db is automatically closed when leaving the with statement.</span>
</pre></div>
</div>
<div class="admonition seealso">
<p class="admonition-title">همچنین ملاحظه نمائید</p>
<dl class="simple">
<dt>Module <a class="reference internal" href="shelve.html#module-shelve" title="shelve: Python object persistence."><code class="xref py py-mod docutils literal notranslate"><span class="pre">shelve</span></code></a></dt><dd><p>Persistence module which stores non-string data.</p>
</dd>
</dl>
</div>
<p>The individual submodules are described in the following sections.</p>
<section id="module-dbm.sqlite3">
<span id="dbm-sqlite3-sqlite-backend-for-dbm"></span><h2><code class="xref py py-mod docutils literal notranslate"><span class="pre">dbm.sqlite3</span></code> --- SQLite backend for dbm<a class="headerlink" href="#module-dbm.sqlite3" title="Link to this heading">¶</a></h2>
<div class="versionadded">
<p><span class="versionmodified added">Added in version 3.13.</span></p>
</div>
<p><strong>Source code:</strong> <a class="extlink-source reference external" href="https://github.com/python/cpython/tree/3.14/Lib/dbm/sqlite3.py">Lib/dbm/sqlite3.py</a></p>
<hr class="docutils" />
<p>This module uses the standard library <a class="reference internal" href="sqlite3.html#module-sqlite3" title="sqlite3: A DB-API 2.0 implementation using SQLite 3.x."><code class="xref py py-mod docutils literal notranslate"><span class="pre">sqlite3</span></code></a> module to provide an
SQLite backend for the <code class="xref py py-mod docutils literal notranslate"><span class="pre">dbm</span></code> module.
The files created by <code class="xref py py-mod docutils literal notranslate"><span class="pre">dbm.sqlite3</span></code> can thus be opened by <code class="xref py py-mod docutils literal notranslate"><span class="pre">sqlite3</span></code>,
or any other SQLite browser, including the SQLite CLI.</p>
<div class="availability docutils container">
<p><a class="reference internal" href="intro.html#availability"><span class="std std-ref">در دسترس بودن</span></a>: not WASI.</p>
<p>This module does not work or is not available on WebAssembly. See
<a class="reference internal" href="intro.html#wasm-availability"><span class="std std-ref">WebAssembly platforms</span></a> for more information.</p>
</div>
<dl class="py function">
<dt class="sig sig-object py" id="dbm.sqlite3.open">
<span class="sig-prename descclassname"><span class="pre">dbm.sqlite3.</span></span><span class="sig-name descname"><span class="pre">open</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">filename</span></span></em>, <em class="sig-param"><span class="positional-only-separator o"><abbr title="Positional-only parameter separator (PEP 570)"><span class="pre">/</span></abbr></span></em>, <em class="sig-param"><span class="n"><span class="pre">flag</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'r'</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">mode</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0o666</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#dbm.sqlite3.open" title="Link to this definition">¶</a></dt>
<dd><p>Open an SQLite database.</p>
<dl class="field-list simple">
<dt class="field-odd">پارامترها<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>filename</strong> (<a class="reference internal" href="../glossary.html#term-path-like-object"><span class="xref std std-term">path-like object</span></a>) -- The path to the database to be opened.</p></li>
<li><p><strong>flag</strong> (<a class="reference internal" href="stdtypes.html#str" title="str"><em>str</em></a>) -- <ul>
<li><p><code class="docutils literal notranslate"><span class="pre">'r'</span></code> (default): Open existing database for reading only.</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">'w'</span></code>: Open existing database for reading and writing.</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">'c'</span></code>: Open database for reading and writing, creating it if it doesn't exist.</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">'n'</span></code>: Always create a new, empty database, open for reading and writing.</p></li>
</ul>
</p></li>
<li><p><strong>mode</strong> -- The Unix file access mode of the file (default: octal <code class="docutils literal notranslate"><span class="pre">0o666</span></code>),
used only when the database has to be created.</p></li>
</ul>
</dd>
</dl>
<p>The returned database object behaves similar to a mutable <a class="reference internal" href="../glossary.html#term-mapping"><span class="xref std std-term">mapping</span></a>,
but the <code class="xref py py-meth docutils literal notranslate"><span class="pre">keys()</span></code> method returns a list, and
the <code class="xref py py-meth docutils literal notranslate"><span class="pre">setdefault()</span></code> method requires two arguments.
It also supports a "closing" context manager via the <a class="reference internal" href="../reference/compound_stmts.html#with"><code class="xref std std-keyword docutils literal notranslate"><span class="pre">with</span></code></a> keyword.</p>
<p>The following method is also provided:</p>
<dl class="py method">
<dt class="sig sig-object py" id="dbm.sqlite3.sqlite3.close">
<span class="sig-prename descclassname"><span class="pre">sqlite3.</span></span><span class="sig-name descname"><span class="pre">close</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#dbm.sqlite3.sqlite3.close" title="Link to this definition">¶</a></dt>
<dd><p>Close the SQLite database.</p>
</dd></dl>
</dd></dl>
</section>
<section id="module-dbm.gnu">
<span id="dbm-gnu-gnu-database-manager"></span><h2><code class="xref py py-mod docutils literal notranslate"><span class="pre">dbm.gnu</span></code> --- GNU database manager<a class="headerlink" href="#module-dbm.gnu" title="Link to this heading">¶</a></h2>
<p><strong>Source code:</strong> <a class="extlink-source reference external" href="https://github.com/python/cpython/tree/3.14/Lib/dbm/gnu.py">Lib/dbm/gnu.py</a></p>
<hr class="docutils" />
<p>The <code class="xref py py-mod docutils literal notranslate"><span class="pre">dbm.gnu</span></code> module provides an interface to the <abbr title="GNU dbm">GDBM</abbr>
library, similar to the <a class="reference internal" href="#module-dbm.ndbm" title="dbm.ndbm: The New Database Manager"><code class="xref py py-mod docutils literal notranslate"><span class="pre">dbm.ndbm</span></code></a> module, but with additional
functionality like crash tolerance.</p>
<div class="admonition note">
<p class="admonition-title">توجه</p>
<p>The file formats created by <code class="xref py py-mod docutils literal notranslate"><span class="pre">dbm.gnu</span></code> and <a class="reference internal" href="#module-dbm.ndbm" title="dbm.ndbm: The New Database Manager"><code class="xref py py-mod docutils literal notranslate"><span class="pre">dbm.ndbm</span></code></a> are incompatible
and can not be used interchangeably.</p>
</div>
<div class="availability docutils container">
<p><a class="reference internal" href="intro.html#availability"><span class="std std-ref">در دسترس بودن</span></a>: not Android, not iOS, not WASI.</p>
<p>This module is not supported on <a class="reference internal" href="intro.html#mobile-availability"><span class="std std-ref">mobile platforms</span></a>
or <a class="reference internal" href="intro.html#wasm-availability"><span class="std std-ref">WebAssembly platforms</span></a>.</p>
</div>
<div class="availability docutils container">
<p><a class="reference internal" href="intro.html#availability"><span class="std std-ref">در دسترس بودن</span></a>: Unix.</p>
</div>
<dl class="py exception">
<dt class="sig sig-object py" id="dbm.gnu.error">
<em class="property"><span class="k"><span class="pre">exception</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">dbm.gnu.</span></span><span class="sig-name descname"><span class="pre">error</span></span><a class="headerlink" href="#dbm.gnu.error" title="Link to this definition">¶</a></dt>
<dd><p>Raised on <code class="xref py py-mod docutils literal notranslate"><span class="pre">dbm.gnu</span></code>-specific errors, such as I/O errors. <a class="reference internal" href="exceptions.html#KeyError" title="KeyError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">KeyError</span></code></a> is
raised for general mapping errors like specifying an incorrect key.</p>
</dd></dl>
<dl class="py data">
<dt class="sig sig-object py" id="dbm.gnu.open_flags">
<span class="sig-prename descclassname"><span class="pre">dbm.gnu.</span></span><span class="sig-name descname"><span class="pre">open_flags</span></span><a class="headerlink" href="#dbm.gnu.open_flags" title="Link to this definition">¶</a></dt>
<dd><p>A string of characters the <em>flag</em> parameter of <a class="reference internal" href="#dbm.gnu.open" title="dbm.gnu.open"><code class="xref py py-meth docutils literal notranslate"><span class="pre">open()</span></code></a> supports.</p>
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="dbm.gnu.open">
<span class="sig-prename descclassname"><span class="pre">dbm.gnu.</span></span><span class="sig-name descname"><span class="pre">open</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">filename</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">flag</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'r'</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">mode</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0o666</span></span></em>, <em class="sig-param"><span class="positional-only-separator o"><abbr title="Positional-only parameter separator (PEP 570)"><span class="pre">/</span></abbr></span></em><span class="sig-paren">)</span><a class="headerlink" href="#dbm.gnu.open" title="Link to this definition">¶</a></dt>
<dd><p>Open a GDBM database and return a <code class="xref py py-class docutils literal notranslate"><span class="pre">gdbm</span></code> object.</p>
<dl class="field-list simple">
<dt class="field-odd">پارامترها<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>filename</strong> (<a class="reference internal" href="../glossary.html#term-path-like-object"><span class="xref std std-term">path-like object</span></a>) -- The database file to open.</p></li>
<li><p><strong>flag</strong> (<a class="reference internal" href="stdtypes.html#str" title="str"><em>str</em></a>) -- <ul>
<li><p><code class="docutils literal notranslate"><span class="pre">'r'</span></code> (default): Open existing database for reading only.</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">'w'</span></code>: Open existing database for reading and writing.</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">'c'</span></code>: Open database for reading and writing, creating it if it doesn't exist.</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">'n'</span></code>: Always create a new, empty database, open for reading and writing.</p></li>
</ul>
<p>The following additional characters may be appended
to control how the database is opened:</p>
<ul>
<li><p><code class="docutils literal notranslate"><span class="pre">'f'</span></code>: Open the database in fast mode.
Writes to the database will not be synchronized.</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">'s'</span></code>: Synchronized mode.
Changes to the database will be written immediately to the file.</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">'u'</span></code>: Do not lock database.</p></li>
</ul>
<p>Not all flags are valid for all versions of GDBM.
See the <a class="reference internal" href="#dbm.gnu.open_flags" title="dbm.gnu.open_flags"><code class="xref py py-data docutils literal notranslate"><span class="pre">open_flags</span></code></a> member for a list of supported flag characters.</p>
</p></li>
<li><p><strong>mode</strong> (<a class="reference internal" href="functions.html#int" title="int"><em>int</em></a>) -- The Unix file access mode of the file (default: octal <code class="docutils literal notranslate"><span class="pre">0o666</span></code>),
used only when the database has to be created.</p></li>
</ul>
</dd>
<dt class="field-even">برانگیختن<span class="colon">:</span></dt>
<dd class="field-even"><p><a class="reference internal" href="#dbm.gnu.error" title="dbm.gnu.error"><strong>error</strong></a> -- If an invalid <em>flag</em> argument is passed.</p>
</dd>
</dl>
<div class="versionchanged">
<p><span class="versionmodified changed">تغییر داده شده در نسخه 3.11: </span><em>filename</em> accepts a <a class="reference internal" href="../glossary.html#term-path-like-object"><span class="xref std std-term">path-like object</span></a>.</p>
</div>
<p><code class="xref py py-class docutils literal notranslate"><span class="pre">gdbm</span></code> objects behave similar to mutable <a class="reference internal" href="../glossary.html#term-mapping"><span class="xref std std-term">mappings</span></a>,
but methods <code class="xref py py-meth docutils literal notranslate"><span class="pre">items()</span></code>, <code class="xref py py-meth docutils literal notranslate"><span class="pre">values()</span></code>, <code class="xref py py-meth docutils literal notranslate"><span class="pre">pop()</span></code>, <code class="xref py py-meth docutils literal notranslate"><span class="pre">popitem()</span></code>,
and <code class="xref py py-meth docutils literal notranslate"><span class="pre">update()</span></code> are not supported,
the <code class="xref py py-meth docutils literal notranslate"><span class="pre">keys()</span></code> method returns a list, and
the <code class="xref py py-meth docutils literal notranslate"><span class="pre">setdefault()</span></code> method requires two arguments.
It also supports a "closing" context manager via the <a class="reference internal" href="../reference/compound_stmts.html#with"><code class="xref std std-keyword docutils literal notranslate"><span class="pre">with</span></code></a> keyword.</p>
<div class="versionchanged">
<p><span class="versionmodified changed">تغییر داده شده در نسخه 3.2: </span>Added the <code class="xref py py-meth docutils literal notranslate"><span class="pre">get()</span></code> and <code class="xref py py-meth docutils literal notranslate"><span class="pre">setdefault()</span></code> methods.</p>
</div>
<div class="versionchanged">
<p><span class="versionmodified changed">تغییر داده شده در نسخه 3.13: </span>Added the <code class="xref py py-meth docutils literal notranslate"><span class="pre">clear()</span></code> method.</p>
</div>
<p>The following methods are also provided:</p>
<dl class="py method">
<dt class="sig sig-object py" id="dbm.gnu.gdbm.close">
<span class="sig-prename descclassname"><span class="pre">gdbm.</span></span><span class="sig-name descname"><span class="pre">close</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#dbm.gnu.gdbm.close" title="Link to this definition">¶</a></dt>
<dd><p>Close the GDBM database.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="dbm.gnu.gdbm.firstkey">
<span class="sig-prename descclassname"><span class="pre">gdbm.</span></span><span class="sig-name descname"><span class="pre">firstkey</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#dbm.gnu.gdbm.firstkey" title="Link to this definition">¶</a></dt>
<dd><p>It's possible to loop over every key in the database using this method and the
<a class="reference internal" href="#dbm.gnu.gdbm.nextkey" title="dbm.gnu.gdbm.nextkey"><code class="xref py py-meth docutils literal notranslate"><span class="pre">nextkey()</span></code></a> method. The traversal is ordered by GDBM's internal
hash values, and won't be sorted by the key values. This method returns
the starting key.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="dbm.gnu.gdbm.nextkey">
<span class="sig-prename descclassname"><span class="pre">gdbm.</span></span><span class="sig-name descname"><span class="pre">nextkey</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">key</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#dbm.gnu.gdbm.nextkey" title="Link to this definition">¶</a></dt>
<dd><p>Returns the key that follows <em>key</em> in the traversal. The following code prints
every key in the database <code class="docutils literal notranslate"><span class="pre">db</span></code>, without having to create a list in memory that
contains them all:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="n">k</span> <span class="o">=</span> <span class="n">db</span><span class="o">.</span><span class="n">firstkey</span><span class="p">()</span>
<span class="k">while</span> <span class="n">k</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
<span class="nb">print</span><span class="p">(</span><span class="n">k</span><span class="p">)</span>
<span class="n">k</span> <span class="o">=</span> <span class="n">db</span><span class="o">.</span><span class="n">nextkey</span><span class="p">(</span><span class="n">k</span><span class="p">)</span>
</pre></div>
</div>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="dbm.gnu.gdbm.reorganize">
<span class="sig-prename descclassname"><span class="pre">gdbm.</span></span><span class="sig-name descname"><span class="pre">reorganize</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#dbm.gnu.gdbm.reorganize" title="Link to this definition">¶</a></dt>
<dd><p>If you have carried out a lot of deletions and would like to shrink the space
used by the GDBM file, this routine will reorganize the database. <code class="xref py py-class docutils literal notranslate"><span class="pre">gdbm</span></code>
objects will not shorten the length of a database file except by using this
reorganization; otherwise, deleted file space will be kept and reused as new
(key, value) pairs are added.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="dbm.gnu.gdbm.sync">
<span class="sig-prename descclassname"><span class="pre">gdbm.</span></span><span class="sig-name descname"><span class="pre">sync</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#dbm.gnu.gdbm.sync" title="Link to this definition">¶</a></dt>
<dd><p>When the database has been opened in fast mode, this method forces any
unwritten data to be written to the disk.</p>
</dd></dl>
</dd></dl>
</section>
<section id="module-dbm.ndbm">
<span id="dbm-ndbm-new-database-manager"></span><h2><code class="xref py py-mod docutils literal notranslate"><span class="pre">dbm.ndbm</span></code> --- New Database Manager<a class="headerlink" href="#module-dbm.ndbm" title="Link to this heading">¶</a></h2>
<p><strong>Source code:</strong> <a class="extlink-source reference external" href="https://github.com/python/cpython/tree/3.14/Lib/dbm/ndbm.py">Lib/dbm/ndbm.py</a></p>
<hr class="docutils" />
<p>The <code class="xref py py-mod docutils literal notranslate"><span class="pre">dbm.ndbm</span></code> module provides an interface to the
<abbr title="New Database Manager">NDBM</abbr> library.
This module can be used with the "classic" NDBM interface or the
<abbr title="GNU dbm">GDBM</abbr> compatibility interface.</p>
<div class="admonition note">
<p class="admonition-title">توجه</p>
<p>The file formats created by <a class="reference internal" href="#module-dbm.gnu" title="dbm.gnu: GNU database manager"><code class="xref py py-mod docutils literal notranslate"><span class="pre">dbm.gnu</span></code></a> and <code class="xref py py-mod docutils literal notranslate"><span class="pre">dbm.ndbm</span></code> are incompatible
and can not be used interchangeably.</p>
</div>
<div class="admonition warning">
<p class="admonition-title">هشدار</p>
<p>The NDBM library shipped as part of macOS has an undocumented limitation on the
size of values, which can result in corrupted database files
when storing values larger than this limit. Reading such corrupted files can
result in a hard crash (segmentation fault).</p>
</div>
<div class="availability docutils container">
<p><a class="reference internal" href="intro.html#availability"><span class="std std-ref">در دسترس بودن</span></a>: not Android, not iOS, not WASI.</p>
<p>This module is not supported on <a class="reference internal" href="intro.html#mobile-availability"><span class="std std-ref">mobile platforms</span></a>
or <a class="reference internal" href="intro.html#wasm-availability"><span class="std std-ref">WebAssembly platforms</span></a>.</p>
</div>
<div class="availability docutils container">
<p><a class="reference internal" href="intro.html#availability"><span class="std std-ref">در دسترس بودن</span></a>: Unix.</p>
</div>
<dl class="py exception">
<dt class="sig sig-object py" id="dbm.ndbm.error">
<em class="property"><span class="k"><span class="pre">exception</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">dbm.ndbm.</span></span><span class="sig-name descname"><span class="pre">error</span></span><a class="headerlink" href="#dbm.ndbm.error" title="Link to this definition">¶</a></dt>
<dd><p>Raised on <code class="xref py py-mod docutils literal notranslate"><span class="pre">dbm.ndbm</span></code>-specific errors, such as I/O errors. <a class="reference internal" href="exceptions.html#KeyError" title="KeyError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">KeyError</span></code></a> is raised
for general mapping errors like specifying an incorrect key.</p>
</dd></dl>
<dl class="py data">
<dt class="sig sig-object py" id="dbm.ndbm.library">
<span class="sig-prename descclassname"><span class="pre">dbm.ndbm.</span></span><span class="sig-name descname"><span class="pre">library</span></span><a class="headerlink" href="#dbm.ndbm.library" title="Link to this definition">¶</a></dt>
<dd><p>Name of the NDBM implementation library used.</p>
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="dbm.ndbm.open">
<span class="sig-prename descclassname"><span class="pre">dbm.ndbm.</span></span><span class="sig-name descname"><span class="pre">open</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">filename</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">flag</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'r'</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">mode</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0o666</span></span></em>, <em class="sig-param"><span class="positional-only-separator o"><abbr title="Positional-only parameter separator (PEP 570)"><span class="pre">/</span></abbr></span></em><span class="sig-paren">)</span><a class="headerlink" href="#dbm.ndbm.open" title="Link to this definition">¶</a></dt>
<dd><p>Open an NDBM database and return an <code class="xref py py-class docutils literal notranslate"><span class="pre">ndbm</span></code> object.</p>
<dl class="field-list simple">
<dt class="field-odd">پارامترها<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>filename</strong> (<a class="reference internal" href="../glossary.html#term-path-like-object"><span class="xref std std-term">path-like object</span></a>) -- The basename of the database file
(without the <code class="file docutils literal notranslate"><span class="pre">.dir</span></code> or <code class="file docutils literal notranslate"><span class="pre">.pag</span></code> extensions).</p></li>
<li><p><strong>flag</strong> (<a class="reference internal" href="stdtypes.html#str" title="str"><em>str</em></a>) -- <ul>
<li><p><code class="docutils literal notranslate"><span class="pre">'r'</span></code> (default): Open existing database for reading only.</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">'w'</span></code>: Open existing database for reading and writing.</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">'c'</span></code>: Open database for reading and writing, creating it if it doesn't exist.</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">'n'</span></code>: Always create a new, empty database, open for reading and writing.</p></li>
</ul>
</p></li>
<li><p><strong>mode</strong> (<a class="reference internal" href="functions.html#int" title="int"><em>int</em></a>) -- The Unix file access mode of the file (default: octal <code class="docutils literal notranslate"><span class="pre">0o666</span></code>),
used only when the database has to be created.</p></li>
</ul>
</dd>
</dl>
<div class="versionchanged">
<p><span class="versionmodified changed">تغییر داده شده در نسخه 3.11: </span>Accepts <a class="reference internal" href="../glossary.html#term-path-like-object"><span class="xref std std-term">path-like object</span></a> for filename.</p>
</div>
<p><code class="xref py py-class docutils literal notranslate"><span class="pre">ndbm</span></code> objects behave similar to mutable <a class="reference internal" href="../glossary.html#term-mapping"><span class="xref std std-term">mappings</span></a>,
but methods <code class="xref py py-meth docutils literal notranslate"><span class="pre">items()</span></code>, <code class="xref py py-meth docutils literal notranslate"><span class="pre">values()</span></code>, <code class="xref py py-meth docutils literal notranslate"><span class="pre">pop()</span></code>, <code class="xref py py-meth docutils literal notranslate"><span class="pre">popitem()</span></code>,
and <code class="xref py py-meth docutils literal notranslate"><span class="pre">update()</span></code> are not supported,
the <code class="xref py py-meth docutils literal notranslate"><span class="pre">keys()</span></code> method returns a list, and
the <code class="xref py py-meth docutils literal notranslate"><span class="pre">setdefault()</span></code> method requires two arguments.
It also supports a "closing" context manager via the <a class="reference internal" href="../reference/compound_stmts.html#with"><code class="xref std std-keyword docutils literal notranslate"><span class="pre">with</span></code></a> keyword.</p>
<div class="versionchanged">
<p><span class="versionmodified changed">تغییر داده شده در نسخه 3.2: </span>Added the <code class="xref py py-meth docutils literal notranslate"><span class="pre">get()</span></code> and <code class="xref py py-meth docutils literal notranslate"><span class="pre">setdefault()</span></code> methods.</p>
</div>
<div class="versionchanged">
<p><span class="versionmodified changed">تغییر داده شده در نسخه 3.13: </span>Added the <code class="xref py py-meth docutils literal notranslate"><span class="pre">clear()</span></code> method.</p>
</div>
<p>The following method is also provided:</p>
<dl class="py method">
<dt class="sig sig-object py" id="dbm.ndbm.ndbm.close">
<span class="sig-prename descclassname"><span class="pre">ndbm.</span></span><span class="sig-name descname"><span class="pre">close</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#dbm.ndbm.ndbm.close" title="Link to this definition">¶</a></dt>
<dd><p>Close the NDBM database.</p>
</dd></dl>
</dd></dl>
</section>
<section id="module-dbm.dumb">
<span id="dbm-dumb-portable-dbm-implementation"></span><h2><code class="xref py py-mod docutils literal notranslate"><span class="pre">dbm.dumb</span></code> --- Portable DBM implementation<a class="headerlink" href="#module-dbm.dumb" title="Link to this heading">¶</a></h2>
<p><strong>Source code:</strong> <a class="extlink-source reference external" href="https://github.com/python/cpython/tree/3.14/Lib/dbm/dumb.py">Lib/dbm/dumb.py</a></p>
<div class="admonition note" id="index-0">
<p class="admonition-title">توجه</p>
<p>The <code class="xref py py-mod docutils literal notranslate"><span class="pre">dbm.dumb</span></code> module is intended as a last resort fallback for the
<code class="xref py py-mod docutils literal notranslate"><span class="pre">dbm</span></code> module when a more robust module is not available. The <code class="xref py py-mod docutils literal notranslate"><span class="pre">dbm.dumb</span></code>
module is not written for speed and is not nearly as heavily used as the other
database modules.</p>
</div>
<hr class="docutils" />
<p>The <code class="xref py py-mod docutils literal notranslate"><span class="pre">dbm.dumb</span></code> module provides a persistent <a class="reference internal" href="stdtypes.html#dict" title="dict"><code class="xref py py-class docutils literal notranslate"><span class="pre">dict</span></code></a>-like
interface which is written entirely in Python.
Unlike other <code class="xref py py-mod docutils literal notranslate"><span class="pre">dbm</span></code> backends, such as <a class="reference internal" href="#module-dbm.gnu" title="dbm.gnu: GNU database manager"><code class="xref py py-mod docutils literal notranslate"><span class="pre">dbm.gnu</span></code></a>, no
external library is required.</p>
<p>The <code class="xref py py-mod docutils literal notranslate"><span class="pre">dbm.dumb</span></code> module defines the following:</p>
<dl class="py exception">
<dt class="sig sig-object py" id="dbm.dumb.error">
<em class="property"><span class="k"><span class="pre">exception</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">dbm.dumb.</span></span><span class="sig-name descname"><span class="pre">error</span></span><a class="headerlink" href="#dbm.dumb.error" title="Link to this definition">¶</a></dt>
<dd><p>Raised on <code class="xref py py-mod docutils literal notranslate"><span class="pre">dbm.dumb</span></code>-specific errors, such as I/O errors. <a class="reference internal" href="exceptions.html#KeyError" title="KeyError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">KeyError</span></code></a> is
raised for general mapping errors like specifying an incorrect key.</p>
</dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="dbm.dumb.open">
<span class="sig-prename descclassname"><span class="pre">dbm.dumb.</span></span><span class="sig-name descname"><span class="pre">open</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">filename</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">flag</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'c'</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">mode</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0o666</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#dbm.dumb.open" title="Link to this definition">¶</a></dt>
<dd><p>Open a <code class="xref py py-mod docutils literal notranslate"><span class="pre">dbm.dumb</span></code> database.</p>
<dl class="field-list simple">
<dt class="field-odd">پارامترها<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>filename</strong> -- <p>The basename of the database file (without extensions).
A new database creates the following files:</p>
<ul>
<li><p><code class="file docutils literal notranslate"><em><span class="pre">filename</span></em><span class="pre">.dat</span></code></p></li>
<li><p><code class="file docutils literal notranslate"><em><span class="pre">filename</span></em><span class="pre">.dir</span></code></p></li>
</ul>
</p></li>
<li><p><strong>flag</strong> (<a class="reference internal" href="stdtypes.html#str" title="str"><em>str</em></a>) -- <ul>
<li><p><code class="docutils literal notranslate"><span class="pre">'r'</span></code>: Open existing database for reading only.</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">'w'</span></code>: Open existing database for reading and writing.</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">'c'</span></code> (default): Open database for reading and writing, creating it if it doesn't exist.</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">'n'</span></code>: Always create a new, empty database, open for reading and writing.</p></li>
</ul>
</p></li>
<li><p><strong>mode</strong> (<a class="reference internal" href="functions.html#int" title="int"><em>int</em></a>) -- The Unix file access mode of the file (default: octal <code class="docutils literal notranslate"><span class="pre">0o666</span></code>),
used only when the database has to be created.</p></li>
</ul>
</dd>
</dl>
<div class="admonition warning">
<p class="admonition-title">هشدار</p>
<p>It is possible to crash the Python interpreter when loading a database
with a sufficiently large/complex entry due to stack depth limitations in
Python's AST compiler.</p>
</div>
<div class="versionchanged">
<p><span class="versionmodified changed">تغییر داده شده در نسخه 3.5: </span><code class="xref py py-func docutils literal notranslate"><span class="pre">open()</span></code> always creates a new database when <em>flag</em> is <code class="docutils literal notranslate"><span class="pre">'n'</span></code>.</p>
</div>
<div class="versionchanged">
<p><span class="versionmodified changed">تغییر داده شده در نسخه 3.8: </span>A database opened read-only if <em>flag</em> is <code class="docutils literal notranslate"><span class="pre">'r'</span></code>.
A database is not created if it does not exist if <em>flag</em> is <code class="docutils literal notranslate"><span class="pre">'r'</span></code> or <code class="docutils literal notranslate"><span class="pre">'w'</span></code>.</p>
</div>
<div class="versionchanged">
<p><span class="versionmodified changed">تغییر داده شده در نسخه 3.11: </span><em>filename</em> accepts a <a class="reference internal" href="../glossary.html#term-path-like-object"><span class="xref std std-term">path-like object</span></a>.</p>
</div>
<p>The returned database object behaves similar to a mutable <a class="reference internal" href="../glossary.html#term-mapping"><span class="xref std std-term">mapping</span></a>,
but the <code class="xref py py-meth docutils literal notranslate"><span class="pre">keys()</span></code> and <code class="xref py py-meth docutils literal notranslate"><span class="pre">items()</span></code> methods return lists, and
the <code class="xref py py-meth docutils literal notranslate"><span class="pre">setdefault()</span></code> method requires two arguments.
It also supports a "closing" context manager via the <a class="reference internal" href="../reference/compound_stmts.html#with"><code class="xref std std-keyword docutils literal notranslate"><span class="pre">with</span></code></a> keyword.</p>
<p>The following methods are also provided:</p>
<dl class="py method">
<dt class="sig sig-object py" id="dbm.dumb.dumbdbm.close">
<span class="sig-prename descclassname"><span class="pre">dumbdbm.</span></span><span class="sig-name descname"><span class="pre">close</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#dbm.dumb.dumbdbm.close" title="Link to this definition">¶</a></dt>
<dd><p>Close the database.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="dbm.dumb.dumbdbm.sync">
<span class="sig-prename descclassname"><span class="pre">dumbdbm.</span></span><span class="sig-name descname"><span class="pre">sync</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#dbm.dumb.dumbdbm.sync" title="Link to this definition">¶</a></dt>
<dd><p>Synchronize the on-disk directory and data files. This method is called
by the <a class="reference internal" href="shelve.html#shelve.Shelf.sync" title="shelve.Shelf.sync"><code class="xref py py-meth docutils literal notranslate"><span class="pre">shelve.Shelf.sync()</span></code></a> method.</p>
</dd></dl>
</dd></dl>
</section>
</section>
<div class="clearer"></div>
</div>
</div>
</div>
<div class="sphinxsidebar" role="navigation" aria-label="Main">
<div class="sphinxsidebarwrapper">
<div>
<h3><a href="../contents.html">فهرست عناوین</a></h3>
<ul>
<li><a class="reference internal" href="#"><code class="xref py py-mod docutils literal notranslate"><span class="pre">dbm</span></code> --- Interfaces to Unix "databases"</a><ul>
<li><a class="reference internal" href="#module-dbm.sqlite3"><code class="xref py py-mod docutils literal notranslate"><span class="pre">dbm.sqlite3</span></code> --- SQLite backend for dbm</a></li>
<li><a class="reference internal" href="#module-dbm.gnu"><code class="xref py py-mod docutils literal notranslate"><span class="pre">dbm.gnu</span></code> --- GNU database manager</a></li>
<li><a class="reference internal" href="#module-dbm.ndbm"><code class="xref py py-mod docutils literal notranslate"><span class="pre">dbm.ndbm</span></code> --- New Database Manager</a></li>
<li><a class="reference internal" href="#module-dbm.dumb"><code class="xref py py-mod docutils literal notranslate"><span class="pre">dbm.dumb</span></code> --- Portable DBM implementation</a></li>
</ul>
</li>
</ul>
</div>
<div>
<h4>موضوع قبلی</h4>
<p class="topless"><a href="marshal.html"
title="فصل قبلی"><code class="xref py py-mod docutils literal notranslate"><span class="pre">marshal</span></code> --- Internal Python object serialization</a></p>
</div>
<div>
<h4>موضوع بعدی</h4>
<p class="topless"><a href="sqlite3.html"
title="فصل بعدی"><code class="xref py py-mod docutils literal notranslate"><span class="pre">sqlite3</span></code> --- DB-API 2.0 interface for SQLite databases</a></p>
</div>
<script>
document.addEventListener('DOMContentLoaded', () => {
const title = document.querySelector('meta[property="og:title"]').content;
const elements = document.querySelectorAll('.improvepage');
const pageurl = window.location.href.split('?')[0];
elements.forEach(element => {
const url = new URL(element.href.split('?')[0].replace("-nojs", ""));
url.searchParams.set('pagetitle', title);
url.searchParams.set('pageurl', pageurl);
url.searchParams.set('pagesource', "library/dbm.rst");
element.href = url.toString();
});
});
</script>
<div role="note" aria-label="source link">
<h3>این صفحه</h3>
<ul class="this-page-menu">
<li><a href="../bugs.html">گزارش یک اشکال</a></li>
<li><a class="improvepage" href="../improve-page-nojs.html">بهبود این صفحه</a></li>
<li>
<a href="https://github.com/python/cpython/blob/main/Doc/library/dbm.rst?plain=1"
rel="nofollow">نمایش منبع
</a>
</li>
<li>
<a href="https://github.com/python/python-docs-fa/blob/3.14/library/dbm.po?plain=1"
rel="nofollow">نمایش منبع ترجمه</a>
</li>
</ul>
</div>
</div>
<div id="sidebarbutton" title="تا کردن نوار کناره">
<span>«</span>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related" role="navigation" aria-label="Related">
<h3>ناوبری</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../genindex.html" title="فهرست کلی"
>فهرست</a></li>
<li class="right" >
<a href="../py-modindex.html" title="نمایه ی ماژول های پایتون"
>ماژول ها</a> |</li>
<li class="right" >
<a href="sqlite3.html" title="sqlite3 --- DB-API 2.0 interface for SQLite databases"
>بعدی</a> |</li>
<li class="right" >
<a href="marshal.html" title="marshal --- Internal Python object serialization"
>قبلی</a> |</li>
<li><img src="../_static/py.svg" alt="Python logo" style="vertical-align: middle; margin-top: -1px"></li>
<li><a href="https://www.python.org/">Python</a> »</li>
<li class="switchers">
<div class="language_switcher_placeholder"></div>
<div class="version_switcher_placeholder"></div>
</li>
<li>
</li>
<li id="cpython-language-and-version">
<a href="../index.html">3.14.6 Documentation</a> »
</li>
<li class="nav-item nav-item-1"><a href="index.html" >The Python Standard Library</a> »</li>
<li class="nav-item nav-item-2"><a href="persistence.html" >Data Persistence</a> »</li>
<li class="nav-item nav-item-this"><a href=""><code class="xref py py-mod docutils literal notranslate"><span class="pre">dbm</span></code> --- Interfaces to Unix "databases"</a></li>
<li class="right">
<div class="inline-search" role="search">
<form class="inline-search" action="../search.html" method="get">
<input placeholder="جستجو سریع" aria-label="جستجو سریع" type="search" name="q" id="search-box">
<input type="submit" value="برو">
</form>
</div>
|
</li>
<li class="right">
<label class="theme-selector-label">
Theme
<select class="theme-selector" oninput="activateTheme(this.value)">
<option value="auto" selected>Auto</option>
<option value="light">Light</option>
<option value="dark">Dark</option>
</select>
</label> |</li>
</ul>
</div>
<div class="footer">
© <a href="../copyright.html">حق چاپ</a> 2001 Python Software Foundation.
<br>
This page is licensed under the Python Software Foundation License Version 2.
<br>
Examples, recipes, and other code in the documentation are additionally licensed under the Zero Clause BSD License.
<br>
See <a href="/license.html">History and License</a> for more information.<br>
<br>
The Python Software Foundation is a non-profit corporation.
<a href="https://www.python.org/psf/donations/">Please donate.</a>
<br>
<br>
آخرین بروز رسانی در اوت 18, 2026 (04:23 UTC) .
<a href="/bugs.html">Found a bug</a>?
<br>
ایجاد شده با<a href="https://www.sphinx-doc.org/">Sphinx</a> 8.2.3.
</div>
</body>
</html>