Python数据库操作之ORM框架

1 篇文章 0 订阅
1 篇文章 0 订阅

前言

之前在github上下载开源项目,里面使用到SQLAlchemy框架,现在想研究一下具体实现

介绍

基本的操作数据库是Mysql官方的MySQL-connector驱动,来完成数据库的连接和使用,但当项目规模增加时,代码会越来越复杂。效率比较高的是基于ORM来操作Mysql。
ORM(Object Relation Mapping),中文意思是对象关系映射,是将底层的RDBMS封装成业务实体对象,提供给业务逻辑层使用。优点是:

  1. 定义好类和对象,不必关注底层的数据库的访问细节,只需注意业务逻辑层面即可。不再需要SQL语句来操作数据库,使用函数来完成对数据库的操作即可。
  2. 即便数据库本身进行了更换,在业务逻辑代码上也不会有大的调整。因为OR
    抽象了数据的存取,同时也兼容了多种DBMS,不必关心底层采用的是哪种DBMS,例如MySQL,SQL Server,PostgreSQL或SQLite。

python中主流的ORM框架

  1. Django,它是Python的web应用开发框架,采用了MTV的框架模式,包括了Model(模式),View(视图)和Template(模板)。Model模型只是Django的一部分功能,我们可以通过它实现数据库的增删改查操作。
  2. SQLALchemy,是Python常用的ORM框架之一,提供了SQL工具包和ORM工具
  3. peewee,轻量级的ORM框架,简单易用。

peewee框架介绍

注意:使用之前先

 pip install pymysql 
 pip install peewee
  1. 连接数据库,创建Table–Person
  2. 插入一条记录
from peewee import *
import datetime

db_connect = MySQLDatabase('mysql_test',host = '127.0.0.1',port = 3306,user='root',password = '' )

class Person(Model):
    name = CharField(max_length=10)
    birthday = DateField()
    class Meta:
        database = db_connect
        table_name = 'person'
if __name__ == '__main__':

    db_connect.create_tables([Person])
    p1 = Person(name='222', birthday=datetime.date(1888, 1, 11))
    p1.save()
  • 新增数据也可以采用另一种写法
p = Person.create(name ='3',birthdat = datetime.date(1992,3,23))
  • 查找数据
#注意:这里是 ==
p = Person.select().where(Person.name=='3').get()
print(p.birthday)
  • 修改数据
#写法1
    p = Person.select().where(Person.name=='3').get()
    p.birthday = datetime.date(1222,2,22)
    p.save()
#写法2
	p2 = Person.get(Person.name=='3')
#也可以使用filter来过滤
  • 删除数据
#写法1
   info = Person.select().where(Person.name =='2').get()
    info.delete_instance()
#写法2
    Person.delete().where(Person.name=='222').execute()

外键约束,使用ForeignKeyField 建立外键。

注意:

  1. 如果一个表own的主键是另外一个表other的外键,那么如果own的id=111不存在,就无法向other表里插入这个元素,因为是得现有主键,才有外键。
  2. 使用peewee框架插入原色人之前,首先得先建立与数据库的连接,保证数据库是打开操作才能插入数据啊!

外键的相关链接:http://xiaorui.cc/archives/2766

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值