Python的ORM框架-SQLAlchemy

Python的ORM框架-SQLAlchemy

ORM 全称 Object Relational Mapping, 翻译过来叫对象关系映射。简单的说,ORM 将数据库中的表与面向对象语言中的类建立了一种对应关系。这样,我们要操作数据库,数据库中的表或者表中的一条记录就可以直接通过操作类或者类实例来完成。

SQLAlchemy 是Python 社区最知名的 ORM 工具之一,为高效和高性能的数据库访问设计,实现了完整的企业级持久模型。

连接数据库
from sqlalchemy import create_engine

engine = create_engine('mysql+mysqldb://root@localhost:3306/blog')#'数据库类型+数据库驱动名称://用户名:口令@机器地址:端口号/数据库名'

print(engine)
创建表:
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, String, Integer


engine = create_engine('mysql+mysqldb://root@localhost:3306/blog?charset=utf8')
Base = declarative_base()


class User(Base):

    __tablename__ = 'users'

    id = Column(Integer, primary_key=True)
    username = Column(String(64), nullable=False, index=True)
    password = Column(String(64), nullable=False)
    email = Column(String(64), nullable=False, index=True)


    def __repr__(self):
        return '%s(%r)' % (self.__class__.__name__, self.username)
我们看到,在 User 类中,用 tablename 指定在 MySQL 中表的名字。我们创建了三个基本字段,类中的每一个 Column 代表数据库中的一列,在 Colunm中,指定该列的一些配置。第一个字段代表类的数据类型,上面我们使用 String, Integer 俩个最常用的类型,其他常用的包括:
Text
Boolean
SmallInteger
DateTime
nullable=False 代表这一列不可以为空,index=True 表示在该列创建索引。
另外定义 repr 是为了方便调试,你可以不定义,也可以定义的更详细一些。

简单 CURD

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2017/8/13 19:35
# @File    : Demo1.py

"""
Python ORM 框架的基本用法

"""


from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, String, Integer
from sqlalchemy.orm import sessionmaker
import faker
from faker import Factory

engine = create_engine('mysql+pymysql://root:1996112lin@localhost:3306/mydata')

Base = declarative_base()


class T1(Base):

    __tablename__ = 't1'

    id = Column(Integer, primary_key=True)
    username = Column(String(64), nullable=False, index=True)
    password = Column(String(64), nullable=False)
    email = Column(String(64), nullable=False, index=True)


    def __repr__(self):
        return '%s(%r)' % (self.__class__.__name__, self.username)

    def __init__(self,username,password,email):
            # self.id=id
            self.username=username
            self.password=password
            self.email=email

def insert():
    Session=sessionmaker(bind=engine)
    session=Session()
    t=T1(username='s',password='s',email='s')
    session.add(t)
    session.commit()

def insert_many():
    Session = sessionmaker(bind=engine)
    session = Session()
    faker = Factory.create()  #生成虚假数据
    faker_users = [T1(
        username=faker.name(),
        password=faker.word(),
        email=faker.email(),
    ) for i in range(10)]
    session.add_all(faker_users)
    session.commit()


def Retrieve():
    Session = sessionmaker(bind=engine)
    session = Session()
    user=session.query(T1).filter_by(username='s').first()
    print(session.query(T1).all())
    print(user)

def Update():
    Session = sessionmaker(bind=engine)
    session = Session()
    t=session.query(T1).filter_by(username='Linda Diaz').first()
    t.email='ksksksk'
    session.add(t)
    session.commit()

def Delete():
    Session = sessionmaker(bind=engine)
    session = Session()
    t=session.query(T1).filter_by(username='Sarah Rubio').first()
    session.delete(t)
    session.commit()


if __name__ == '__main__':
    insert_many()
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值