zoukankan      html  css  js  c++  java
  • sqlalchemy 入门

    ORM技术:Object-Relational Mapping,把关系数据库的表结构映射到对象上。

    在Python中,最有名的ORM框架是SQLAlchemy。

    # 导入:
    from sqlalchemy import Column, String, create_engine
    from sqlalchemy.orm import sessionmaker
    from sqlalchemy.ext.declarative import declarative_base
    # 创建对象的基类:
    Base = declarative_base()
    # 定义某个表所对应的对象:

    class table_name(Base):

       # 表的名字:
    __tablename__ = 'table_name'
        # 表的结构:
        id = Column(String(20), primary_key=True)
        name = Column(String(20))

    # 初始化数据库连接:
    engine = create_engine('mysql+mysqlconnector://root:password@localhost:3306/test')
    # 创建DBSession类型:
    DBSession = sessionmaker(bind=engine)


    以上代码完成SQLAlchemy的初始化和具体每个表的class定义。
    create_engine()用来初始化数据库连接。
    SQLAlchemy用一个字符串表示连接信息:'数据库类型+数据库驱动名称://用户名:口令@机器地址:端口号/数据库名'
    使用时根据需要替换掉用户名,口令等信息。


    由于有了ORM,我们向数据库表中添加一行记录,可以视为添加一个table_name对象
    # 创建session对象:
    session = DBSession()
    # 创建新User对象:
    new_user = User(id='5', name='Bob')
    # 添加到session:
    session.add(new_user)
    # 提交即保存到数据库:
    session.commit()
    # 关闭session:
    session.close()


    关键是获取session,然后把对象添加到session,最后提交并关闭。Session对象可视为当前数据库连接。
    有了ORM,查询出来的可以不再是tuple,而是表所对应的对象。SQLAlchemy提供的查询接口如下:
    # 创建Session:
    session = DBSession()
    # 创建Query查询,filter是where条件,最后调用one()返回唯一行,如果调用all()则返回所有行:
    user = session.query(table_name).filter(User.id=='5').one()
    # 打印类型和对象的name属性:
    print 'type:', type(user)
    print 'name:', user.name
    # 关闭Session:
    session.close()

    可见,ORM就是把数据库表的行与相应的对象建立关联,互相转换。
  • 相关阅读:
    理解inode
    贝叶斯公式与拼写检查器
    《C程序设计语言》第四章 函数和程序结构
    MIT《计算机科学与编程导论》课堂笔记
    很牛的牛顿迭代法
    开发一个小工具重温C#经典问题
    斯坦福《编程方法学》环境搭建及常见问题
    看Sybase官方手册学索引工作原理
    学习编程的方法、软件和工具
    大师里奇留给了我们什么
  • 原文地址:https://www.cnblogs.com/DSKer/p/10456019.html
Copyright © 2011-2022 走看看