Skip to content

Dp Data Mapper

DodaTech 1 min read

In this tutorial, you'll learn about How to Fix Data Mapper Errors. We cover key concepts, practical examples, and best practices.

Fix data mapper errors when business objects depend on database schema or raw SQL everywhere.

Quick Fix

Wrong

class User:
    def __init__(self,row):
        self.id=row['id']; self.name=row['name']
    def save(self):
        db.execute(f'UPDATE users SET name="{self.name}" WHERE id={self.id}')

SQL injection. Domain object knows SQL. Schema changes break domain objects.

from abc import ABC,abstractmethod
class User:
    def __init__(self,name): self.name=name; self.id=None
    def change_name(self,n): self.name=n
class UserMapper:
    def __init__(self,conn): self.conn=conn
    def insert(self,user):
        cur=self.conn.execute('INSERT INTO users(name) VALUES(?) RETURNING id',(user.name,))
        user.id=cur.fetchone()[0]
    def update(self,user):
        self.conn.execute('UPDATE users SET name=? WHERE id=?',(user.name,user.id))
    def find(self,uid):
        row=self.conn.execute('SELECT id,name FROM users WHERE id=?',(uid,)).fetchone()
        u=User(row[1]); u.id=row[0]; return u
conn=sqlite3.connect(':memory:')
mapper=UserMapper(conn); u=User('Bob'); mapper.insert(u); u.change_name('Robert'); mapper.update(u)
Domain objects pure Python. Mapper handles persistence. SQL injection safe via parameters.

Prevention

Data Mapper isolates domain from persistence. Pure domain model. All SQL in mapper layer.

DodaTech Tools

Doda Browser's algorithm visualizer steps through DSA operations line by line. DodaZIP archives implementation patterns for team sharing. Durga Antivirus Pro detects memory corruption patterns in algorithm implementations.

FAQ

What is Data Mapper?

Layer mapping domain objects to database. Domain knows nothing about storage.

When to use?

Complex domain logic. DDD. Multiple storage backends. Tests without DB.

vs Active Record?

Data Mapper: decoupled, more code. Active Record: coupled, less code.

Built by the developers of DodaTech

Doda Browser, DodaZIP & Durga Antivirus Pro