[파이썬] Peewee Model metadata 확장

Peewee is a lightweight and expressive ORM (Object Relational Mapping) library for Python. It provides a convenient way to interact with databases and perform various database operations.

In this blog post, we will explore how to extend Peewee models with metadata. Metadata can include additional information about the model, such as custom attributes or methods that can be useful for various purposes.

1. Defining the Model

To begin with, let’s create a simple Peewee model with some basic fields:

import peewee as pw

class User(pw.Model):
    username = pw.CharField(unique=True)
    email = pw.CharField(unique=True)
    password = pw.CharField()

    class Meta:
        database = pw.SqliteDatabase(':memory:')

In the above code, we define a User model with three fields: username, email, and password. We also define a Meta class inside the model, specifying that the model will use an in-memory SQLite database for simplicity.

2. Adding Metadata to the Model

To extend the model with additional metadata, we can define class attributes or methods inside the model. Let’s add a get_full_name() method to the User model:

class User(pw.Model):
    username = pw.CharField(unique=True)
    email = pw.CharField(unique=True)
    password = pw.CharField()

    def get_full_name(self):
        return f"{self.username} ({self.email})"

    class Meta:
        database = pw.SqliteDatabase(':memory:')

In the above code, we define a get_full_name() method that returns the full name of the user by combining the username and email fields.

3. Accessing the Metadata

Once we have extended the model with metadata, we can access it from instances of the model. Let’s see how to access the get_full_name() method:

user = User(username='john.doe', email='john@example.com', password='password123')
full_name = user.get_full_name()

print(full_name)  # Output: john.doe (john@example.com)

In the above code, we create an instance of the User model and call the get_full_name() method to retrieve the full name of the user.

4. Uses of Model Metadata

Extending Peewee models with metadata can be beneficial in many scenarios. Here are a few use cases:

Conclusion

In this blog post, we explored how to extend Peewee models with metadata. We learned how to add custom attributes and methods to the model and how to access them from model instances. Using model metadata, you can enhance the functionality of your Peewee models and make them more powerful and flexible.

Peewee’s extensibility makes it a popular choice among Python developers for working with databases. Feel free to experiment with different ways to extend Peewee models and discover new possibilities. Happy coding!