Persistent Storage of Objects
Persistent storage refers to the ability to save objects to a storage medium (like a file or database) so that they can be retrieved later. This is crucial for applications that need to maintain state across program executions.
Common Approaches
1. Pickling:
o Serializes Python objects into a byte stream.
o Can be used to save objects to files.
o Example:
Python
import pickle
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
person = Person(
"Alice",
30)
with
open(
"person.pkl",
"wb")
as f:
pickle.dump(person, f)
with
open(
"person.pkl",
"rb")
as f:
loaded_person = pickle.load(f)
print(loaded_person.name)
# Output: Alice
2. Shelve:
o
A high-level interface built on top of pickle
for storing
Python objects in a shelf file.
o Example:
Python
import shelve
with shelve.
open(
"my_shelf")
as shelf:
shelf[
"person"] = Person(
"Alice",
30)
with shelve.
open(
"my_shelf")
as shelf:
loaded_person = shelf[
"person"]
3. Databases:
o Use databases like SQLite, PostgreSQL, or MySQL to store objects in a structured format.
o Example:
Python
import sqlite3
conn = sqlite3.connect(
"my_database.db")
c = conn.cursor()
c.execute(
"CREATE TABLE people (name TEXT, age INTEGER)")
c.execute(
"INSERT INTO people VALUES ('Alice', 30)")
conn.commit()
conn.close()
4. Object-Relational Mappers (ORMs):
o Libraries like SQLAlchemy provide a higher-level interface for interacting with databases.
o Example:
Python
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
classPerson(Base):
__tablename__ = 'people'
id = Column(Integer, primary_key=True)
name = Column(String)
age = Column(Integer)
Considerations:
- Data Format: Choose a format that is suitable for your data and application.
- Performance: Consider the performance implications of different storage methods.
- Compatibility: Ensure compatibility with different Python versions and environments.
- Security: Implement appropriate security measures to protect sensitive data.
By understanding these approaches, you can effectively store and retrieve objects in Python for persistent storage.