Python中ModelBase()的使用方法详解
ModelBase是python中一个抽象基类,用于定义模型的基本方法和属性。它位于peewee库中,是在创建模型类时的基类,所有继承于ModelBase的子类都是模型类。
要使用ModelBase,首先需要导入相应的模块:
from peewee import Model, CharField, IntegerField
接下来,可以定义一个继承于ModelBase的模型类:
class Person(Model):
name = CharField()
age = IntegerField()
class Meta:
database = db
在这个例子中,我们创建了一个Person模型类,它有两个字段(name和age)和一个Meta类,指定了数据库连接的配置。
ModelBase提供了一些常用的方法和属性,下面将逐个进行详细介绍。
1. database属性:表示模型类与哪个数据库连接。
在上面的例子中,我们在Meta类中指定了database属性,它指定了连接的数据库,可以是SQLite、MySQL等。在模型类中访问database属性可以直接访问到这个连接。
print(Person.database)
输出:
<peewee.Database object at 0x000001234567890>
2. table_name属性:表示模型类对应的数据库表名。
默认情况下,如果不在模型类中定义table_name属性,那么表名会根据模型类的名称自动生成。如果需要自定义表名,可以在模型类中定义table_name属性。例如:
class Person(Model):
name = CharField()
age = IntegerField()
class Meta:
database = db
table_name = 'persons'
3. select()方法:用于执行SELECT查询。
query = Person.select().where(Person.age > 18)
for person in query:
print(person.name, person.age)
输出:
John 20 Lily 25
4. insert()方法:用于执行INSERT操作。
person = Person(name='Tom', age=22) person.save()
也可以使用insert()方法批量插入多条记录:
data = [
{'name': 'Lisa', 'age': 30},
{'name': 'Bob', 'age': 35},
]
Person.insert_many(data).execute()
5. update()方法:用于执行UPDATE操作。
query = Person.update(age=26).where(Person.name == 'John') query.execute()
6. delete()方法:用于执行DELETE操作。
query = Person.delete().where(Person.name == 'John') query.execute()
7. create_table()方法:用于创建表。
Person.create_table()
如果表已经存在,而且不希望删除原有的表,可以使用safe=True参数:
Person.create_table(safe=True)
8. drop_table()方法:用于删除表。
Person.drop_table()
如果不希望删除关联的数据,可以使用cascade=True参数:
Person.drop_table(cascade=True)
以上是ModelBase的常用方法和属性的详细介绍。通过继承ModelBase类,可以方便地创建和操作数据库的模型类。
