Chapter 11. Data Persistence
We mentioned ZIP compression and pickling already in âData Serializationâ, so there isnât much left to cover besides databases in this chapter.
This chapter is mostly about Python libraries that interface with relational databases. These are the kinds of database we normally think aboutâthey contain structured data stored in tables and are accessed using SQL.1
Structured Files
We already mentioned tools for JSON, XML, and ZIP files in
Chapter 9, and pickling and XDR when talking about serialization.
We recommend PyYAML (get it via pip install pyyaml
) to parse YAML.
Python also has tools in its Standard Library for CSV,
*.netrc used by some FTP clients, *.plist files used in OSÂ X,
and a dialect of the Windows INI format via configparser.2
Also, thereâs a persistent key-value store
available via the shelve
module
in Pythonâs Standard Library.
Its backend is the best available
variant of the database manager (dbmâa key-value database)
on your computer:3
>>>
import
shelve
>>>
>>>
with
shelve
.
open
(
'my_shelf'
)
as
s
:
...
s
[
'd'
]
=
{
'key'
:
'value'
}
...
>>>
s
=
shelve
.
open
(
'my_shelf'
,
'r'
)
>>>
s
[
'd'
]
{
'key'
:
'value'
}
You can check which database backend youâre using like this:
>>>
import
dbm
>>>
dbm
.
whichdb
(
'my_shelf'
)
'dbm.gnu'
And you can get the GNU implementation of
dbm here for Windows,
or check your package manager (brew
, apt
, yum
) first, then try the dbm source code.
Database Libraries
The Python Database API (DB-API2) defines a standard ...
Get The Hitchhiker's Guide to Python now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.