详解Python的ORM中Pony用法
Python的ORM(Object Relational Mapping)能够让开发者使用面对对象的方式来操作关系型数据库,使得开发更加高效和便捷。Pony是Python ORM的一个轻量级框架,同时具备ORM的优点以及SQLAlchemy的灵活性。本篇攻略将详细讲解Pony的用法。
什么是Pony ORM
Pony ORM是一个用于Python的ORM框架,而ORM的概念已被介绍。它可以让开发者使用面向对象的方式来访问数据库,同时还支持丰富的查询语句和数据操作。以下是Pony ORM的一些特点:
- 支持SQLite,MySQL,PostgreSQL和Oracle。
- ORM和原生查询可混用。
- 灵活的schema,可动态生成和修改。
- 支持图形编辑器工具。
安装Pony ORM
使用以下命令来安装Pony ORM
pip install pony
现在可以在Python项目中开始使用Pony ORM。
连接数据库
在使用Pony ORM之前,需要创建一个database对象,并使用此对象来连接数据库。可以使用以下代码来创建一个SQLite数据库的示例:
from pony.orm import *
db = Database()
db.bind(provider='sqlite', filename='database.sqlite', create_db=True)
这将创建一个sqlite数据库连接,并指定数据库的文件路径。create_db = True表示如果该文件不存在,则会创建一个新的数据库。
定义实体
在Pony ORM中定义实体类非常简单,如以下代码:
class Product(db.Entity):
name = Required(str)
price = Required(float)
这将定义一个Product类,其中包含名称和价格属性。必须使用Pony ORM提供的特殊装饰器@db.entity和@Required,以告诉Pony ORM如何映射实体和属性。在这个例子中,我们使用了必须标记,表示这些属性是必须的。
数据操作
在绑定实体到数据库之后,就可以进行数据操作了。下面是常见的一些操作:
添加数据
可以使用以下代码向数据库添加数据:
with db_session:
p = Product(name='MacBook Pro', price=1999)
此代码将实例化一个Product对象并向数据库中添加此产品,通过使用with db_session来保证提交。
查询数据
可以使用以下代码查询数据库中的数据:
with db_session:
products = select(p for p in Product)[:]
for product in products:
print(product.name, product.price)
此代码选择所有的产品(Product)实体,并将查询结果分配给products列表。现在迭代这个列表并打印每个产品的名称和价格。
更新数据
可以使用以下代码更新数据库中的数据:
with db_session:
product = Product.get(name='MacBook Pro')
product.price = 2499
此代码查找名称为“MacBook Pro”的产品,并将其价格更改为2499。
删除数据
可以使用以下代码从数据库中删除数据:
with db_session:
product = Product.get(name='MacBook Pro')
product.delete()
此代码查找名称为“MacBook Pro”的产品并将其从数据库中删除。
示例
下面是一个完整的示例,说明如何使用Pony ORM连接到数据库并执行上述操作:
from pony.orm import *
db = Database()
db.bind(provider='sqlite', filename='database.sqlite', create_db=True)
class Product(db.Entity):
name = Required(str)
price = Required(float)
db.generate_mapping(create_tables=True)
with db_session:
p1 = Product(name='MacBook Pro', price=1999)
p2 = Product(name='iPhone', price=999)
commit()
with db_session:
products = select(p for p in Product)[:]
for product in products:
print(product.name, product.price)
with db_session:
product = Product.get(name='MacBook Pro')
product.price = 2499
with db_session:
product = Product.get(name='iPhone')
product.delete()
这将创建两个产品,输出所有产品的名称和价格,将其中一个产品的价格更新为2499,最后删除另一个产品。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解python的ORM中Pony用法 - Python技术站