python_new
  • Introduction
  • First Chapter
  • 一、python基础
    • 1.1 常识
      • sys
    • 1.2 基础语法(1)
    • 1.2 基础语法(2)
    • 1.3 常见问题求解
    • 1.4 算法
  • 二、爬虫
    • urllib库(1)
      • urllib库(2)
    • requests模块(1)
      • requests模块(2)
    • 2.1 爬虫基础(3)HTTP原理
    • 2.1 爬虫基础(4)会话和Cookies
    • 2.1 爬虫基础(5)数据存储
      • Mysql存储
      • MongoDB存储
      • Redis存储
    • 2.3 正则表达式
    • 2.4 解析库lxml
      • BeautifulSoup
      • pyquery(1)
      • pyquery(2)
    • 2.5 selenium(1)
    • 2.5 seleium(2)
    • 2.6 Json
    • 2.7 scrapy
      • scrapy(2)
    • 2.9 异步加载
    • 2.6 Splash
  • ORM框架
    • SQLAlchemy
  • Django
    • 1、初阶(一)
    • 初学:投票教程(一)
    • 初学:投票教程(二)
    • 初学:投票教程(三)
    • 初学:投票教程(总结)
    • 模型(一)
    • 模型(二)
    • 视图(一)
    • 视图(二)
    • 模板(一)
    • django实际使用笔记
  • 面试题收集总结
    • 数据结构原理
    • 算法篇
      • 排序
    • 题目篇
  • python数据分析
    • 基础了解(一)
    • 基础了解(二)
    • 基础了解(三)
  • 多线程
  • 深度学习
    • 疑问
  • keras(一)
  • 神经网络
  • 图像识别
  • Docker
    • 一、基础了解
Powered by GitBook
On this page

Was this helpful?

  1. ORM框架

SQLAlchemy

1、介绍

企业级ORM框架,学习周期长,功能齐全

2、基本概念

Session的主要目的是建立与数据库的对话,它维护你加载和关联的所有数据库对象,是数据库查询(Query)的一个入口

数据库中的查询操作是通过Query对象实现的,而Session提供了创建Query对象的接口。Query对象会返回一组同一映射(Identity Map)对象组成的集合。集合中的一个对象,对应于数据库表中的一行。

同一映射:每个对象有一个唯一的ID,如果两个对象的ID相同,则认为他们是相同的对象。

Engine对象用来建立与数据库的连接,一个Engine对象可能是关联一个Session对象,也可能关联一个数据库表。

3、基本操作

3.1 连接数据库

from sqlalchemy import create_engine

engine = create_engine('mysql+pymysql://root:password@localhost:3306/test_1')
print(engine)

3.2 创建类

from sqlalchemy.ext.declarative import declarative_base

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 "<User(id='%s', fullname='%s', password='%s', email='%s')>" % (self.id, self.username, self.password, self.email)

3.3 创建表

Base.metadata.create_all(engine)

3.4 创建session

DBSession = sessionmaker(bind=engine)
session = DBSession()

数据库设计的难点之一,是session声明周期的管理问题。

这是说怕出现同一个session对象在不同的程序中同一时间被执行了不同的操作而导致问题吗?

在sqlalchemy中提供了一个简单session管理机制,那就是scoped session。它采用注册模式(单例模式?),也就是说,在整个程序运行过程中,只存在一个唯一的session对象。

from sqlalchemy.orm import scoped_session
from sqlalchemy.orm import sessionmaker

session_factory = sessionmaker(bind=some_engine)
Session = scoped_session(session_factory)
session = Session()

所以下面的两个session对象都是同一个对象引用

session1 = Session()
session2 = Session()
PreviousORM框架NextDjango

Last updated 6 years ago

Was this helpful?