码迷,mamicode.com
首页 > 数据库 > 详细

SQLAlchemy

时间:2016-04-21 13:32:32      阅读:235      评论:0      收藏:0      [点我收藏+]

标签:

SQLAlchemy是Python编程语言下的一款ORM框架,该框架建立在数据库API之上,使用关系对象映射进行数据库操作,简言之便是:将对象转换成SQL,然后使用数据API执行SQL并获取执行结果。

虽然小弟是个小菜鸟,虽然小弟对数据库没有见多识广,但说心里话当我看到SQLAlchemy这个架构设计时,真的有一种神奇的感觉。简洁明了,逻辑清晰。原谅小弟lowB的心态。最关键的是不需要再研究那些复杂繁琐的数据库操作细节了。

技术分享

使用SQLAlchemy操作数据库的方式方法有很多种,如通过执行原生SQL语句操作,通过对象操作等。但是在这里只介绍一种最终执行结果的操作,而不是类似中间状态的一些操作。

 

一、基本操作

使用 ORM/Schema Type/SQL Expression Language/Engine/ConnectionPooling/Dialect 所有组件对数据进行操作。根据类创建对象,对象转换成SQL,执行SQL。

#!/usr/bin/env python
# _*_coding:utf-8 _*_

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


Base = declarative_base()
engine = create_engine("mysql+mysqldb://root:123456@192.168.1.106:3306/test1", max_overflow=5, echo=True)


class Host(Base):   # 这个类就是一个表,这里只是映射成功了
    __tablename__ = ‘hosts‘
    id = Column(Integer, primary_key=True, autoincrement=True)
    hostname = Column(String(64), unique=True, nullable=False)
    ip_addr = Column(String(128), unique=True, nullable=False)
    prot = Column(Integer, default=22)


# 寻找Base的所有子类,按照子类的结构在数据库中生成对应的数据表信息
Base.metadata.create_all(engine)  # 创建所有的表结构


if __name__ == ‘__main__‘:

    SessionCls = sessionmaker(bind=engine)   # 创建与数据库会话的session class,返回的是一个类,而不是一个实例
    session = SessionCls()    # 连接数据库的实例,就是用它来对数据库做实际的操作

# ###################### 增 #############################

    # 创建表中数据的实例
    # h1 = Host(hostname=‘localhost‘, ip_addr=‘127.0.0.1‘)
    # h2 = Host(hostname=‘centos‘, ip_addr=‘172.16.16.166‘)

    # session.add(h1)   # 单条创建
    # session.add_all([h1, h2])   # 批量创建
    # session.commit()    # 真正的提交数据库操作

# ###################### 查 ###########################

    # obj = session.query(Host).filter(Host.hostname == ‘centos‘).all()
    # print obj
    # ret = session.query(User).filter_by(name=‘sb‘).first()

    # ret = session.query(User).filter_by(name=‘sb‘).all()

    # ret = session.query(User).filter(User.name.in_([‘sb‘,‘bb‘])).all()

    # ret = session.query(User.name.label(‘name_label‘)).all()
    # print ret,type(ret)

    # ret = session.query(User).order_by(User.id).all()

    # ret = session.query(User).order_by(User.id)[1:3]

    # session.commit()

# ###################### 删除 ###########################

    # obj = session.query(Host).filter(Host.hostname == ‘centos‘).first()
    # session.delete(obj)
    #
    # session.commit()


# ###################### 更新 ###########################

    # obj = session.query(Host).filter_by(hostname=‘localhost‘).first()
    # obj.hostname = "chenchao"
    # print obj
    # session.commit()

 

更多功能参见文档,猛击这里下载PDF

 

SQLAlchemy

标签:

原文地址:http://www.cnblogs.com/chenchao1990/p/5416420.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!