[파이썬] Peewee Legacy databases 지원

Peewee is a lightweight Object Relational Mapping (ORM) library for Python. It provides a simple and intuitive API for interacting with databases. In addition to popular database systems like MySQL, PostgreSQL, and SQLite, Peewee also supports legacy databases.

In this blog post, we will explore how Peewee can be used to interact with legacy databases, which are databases that use older and less commonly used technology or formats.

Legacy Database Support

Peewee provides support for legacy databases through its LegacyDatabase class. This class allows you to connect to and work with legacy databases seamlessly.

To use the LegacyDatabase, you need to specify the connection details, such as the database driver, host, username, and password. Here’s an example of connecting to a legacy MySQL database:

from peewee import LegacyDatabase

database = LegacyDatabase(
    'mysql',
    host='localhost',
    user='username',
    password='password',
    database='legacy_db'
)

Working with Legacy Models

Once you have connected to the legacy database, you can define models that represent tables in the database, just like you would with any other database in Peewee.

Let’s say we have a legacy table in our database called users. We can define a model for this table using Peewee’s model syntax:

from peewee import Model, LegacyCharField

class User(Model):
    name = LegacyCharField(max_length=255)
    email = LegacyCharField(max_length=255)
    age = LegacyIntegerField()

    class Meta:
        database = database
        table_name = 'users'

In this example, we use LegacyCharField and LegacyIntegerField instead of the regular CharField and IntegerField to indicate that these fields are part of the legacy database.

We also specify the database and table_name attributes in the Meta class to associate the model with the legacy database and the corresponding table.

Querying Legacy Data

Once you have defined your legacy models, you can query the data using the familiar Peewee query syntax. Peewee automatically generates the necessary SQL queries to interact with the legacy database.

Here’s an example of querying the users table to get all users older than 18:

adult_users = User.select().where(User.age > 18)

for user in adult_users:
    print(f"Name: {user.name}, Age: {user.age}")

In the above code, we use the select method of the User model to fetch all rows from the users table. We then filter the results using the where method to only include users older than 18. Finally, we iterate over the results and print the name and age of each user.

Conclusion

Peewee’s support for legacy databases allows you to work with older and less commonly used database technologies. By using the LegacyDatabase class and defining your models accordingly, you can seamlessly interact with legacy databases using Peewee’s intuitive API.

Whether you are working with legacy databases or modern ones, Peewee simplifies the process of database integration and makes working with data in Python a breeze.

Happy coding!