`
ryan.liu
  • 浏览: 136724 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

sqlalchemy

 
阅读更多

 

通常我们在数据库中设计好了多张表,在SQLAlchemy中有个autoload可以自动加载.

让我们的Model都继承自某个虚类,这个虚类在需要时会自动加载一次表结构

 

生成我们需要的基类,并绑定数据库连接

 

定义我们的Model,设置表名和外键关联

 

 

可以使用session执行SQL了,scoped_session让maker生成的多个session实际上是重用同一个,

autocommit=True容易导致Bugs,我们使用默认设置不开启它。

在使用过程中发现几个小时后,数据库连接会断掉而没有重新连接,后来在连接时加入pool_recycle=3600,不知是否有用。

保险起见,可以在models中只生成Session类,要用时再创建实例。

 

 

# -*- coding: utf-8 -*-

from sqlalchemy import create_engine, Table
from sqlalchemy.orm import sessionmaker, scoped_session, relationship, backref
from sqlalchemy.ext.declarative import declarative_base, declared_attr
from configs.settings import MYSQL_DATABASES, MYSQL_TABLE_PREFIX


class Base(object):
    __abstract__ = True
    __table_args__ = {"mysql_engine": "InnoDB"}

    @declared_attr
    def __table__(cls):
        name = cls.__tablename__
        return Table(name, cls.metadata, autoload=True)

engine = create_engine( MYSQL_DATABASES["default"] + "?charset=utf8",
                        encoding="utf-8", pool_size=5, pool_recycle=3600)
Base = declarative_base(cls=Base, bind=engine)

class Guide(Base):
    __tablename__ = MYSQL_TABLE_PREFIX + "guide"
    category = relationship("Category",
                primaryjoin="Guide.category_id==Category.id",
                foreign_keys="Guide.category_id",
                backref="guides")
    contents = relationship("Content",
                primaryjoin="Guide.id==Content.guide_id",
                foreign_keys="Content.guide_id",
                order_by="Content.section",
                backref="guide")

class Category(Base):
    __tablename__ = MYSQL_TABLE_PREFIX + "category"

class Content(Base):
    __tablename__ = MYSQL_TABLE_PREFIX + "content"


Session = scoped_session(sessionmaker(autoflush=True))
分享到:
评论

相关推荐

    sqlalchemy documentation sqlalchemy 文档

    根据提供的文档信息,我们可以归纳出一系列关于SQLAlchemy的知识点,主要涵盖了概述与安装、对象关系映射教程、SQL表达式语言教程以及映射器配置等内容。以下是对这些知识点的详细阐述: ### 概述与安装 #### 1.1 ...

    FlaskSQLAlchemy下载及安装

    **Flask-SQLAlchemy**是Python微框架Flask的一个扩展,它使得在Flask应用中集成和使用SQLAlchemy变得更加方便。SQLAlchemy是Python的一个强大的ORM(对象关系映射)库,能够将数据库操作转化为面向对象的编程方式。...

    Python利用flask sqlalchemy实现分页效果

    ### 使用Flask-SQLAlchemy实现分页效果 #### 引言 在Web开发中,当数据量较大时,为了提高用户体验以及减轻服务器负担,通常会采用分页技术展示数据。Flask-SQLAlchemy是一个非常流行的扩展,它为Flask框架提供了...

    SQLAlchemy技术文档(中文版)

    ### SQLAlchemy技术文档(中文版)知识点总结 #### 1. 版本检查 - **功能说明**:在使用SQLAlchemy之前,确保安装的版本符合项目需求是非常重要的。可以通过导入SQLAlchemy包并调用`__version__`属性来检查当前安装的...

    Python库 | SQLAlchemy-1.4.0b1.tar.gz

    SQLAlchemy 是一个强大的 Python SQL 工具包和 ORM(对象关系映射)系统,它提供了对多种数据库引擎的全面支持,包括 PostgreSQL、MySQL、SQLite 和 Microsoft SQL Server 等。在 Python 中,SQLAlchemy 为开发者...

    SQLAlchemy

    SQLAlchemy是一种流行的ORM(对象关系映射)工具,它在Python社区中被广泛使用,特别是在数据库操作和管理方面。ORM工具的主要目的是将数据库中的数据表结构映射到编程语言中的对象模型,允许开发者使用更加面向对象...

    PyPI 官网下载 | sqlalchemy_cockroachdb-1.3.0-py3-none-any.whl

    **PyPI 官网下载 | sqlalchemy_cockroachdb-1.3.0-py3-none-any.whl** PyPI(Python Package Index)是Python社区官方的软件包仓库,提供了大量Python库供开发者下载和使用。在给定的资源中,我们关注的是`...

    sqlalchemy文档资料翻译

    ### SQLAlchemy文档资料翻译知识点 #### 一、概述与核心组件 - **SQLAlchemy**:一套成熟且全面的Python库,用于实现与多种数据库系统的交互。它不仅提供了强大的ORM(对象关系映射)功能,还拥有独立于ORM之外的...

    SQLAlchemy最新英文文档

    SQLAlchemy是Python编程语言下的一款开源软件。提供了SQL工具包及对象关系映射(ORM)工具,使用MIT许可证发行。 SQLAlchemy“采用简单的Python语言,为高效和高性能的数据库访问设计,实现了完整的企业级持久模型”...

    python课程设计-基于flask的短租平台实战项目,web全栈开发,sqlalchemy,适合个人学习

    python课程设计——基于flask的短租平台实战项目,web全栈开发,sqlalchemy,适合个人学习,项目依赖: flask redis flask_session flask_wtf flask_script flask_migrate flask_sqlalchemy python课程设计——基于...

    Python SQLAlchemy入门教程(基本用法)

    标题“Python SQLAlchemy入门教程(基本用法)”表明本文档是一份面向初学者的教程,旨在介绍如何使用Python中的SQLAlchemy库来进行数据库操作。SQLAlchemy是一个流行的对象关系映射(ORM)工具,它允许开发者通过...

    Python库 | SQLAlchemy-1.4.12-cp39-cp39-win_amd64.whl

    **SQLAlchemy** 是一个强大的 Python SQL 工具包和对象关系映射(ORM)系统,它为开发者提供了全套的数据库编程工具。这个标题中的 "SQLAlchemy-1.4.12-cp39-cp39-win_amd64.whl" 文件是一个针对 Python 3.9 平台的 ...

    python-pandas-2.0.3及其依赖包+sqlalchemy-2.0.30及其依赖包+pymysql-1.1.0

    python安装第三方包失败(使用pip安装失败)的解决方案:在我们使用pip安装软件包的时候,经常会遇到这个错误:ERROR: ...3.0.3-cp38-cp38-win_amd64.whl、SQLAlchemy-2.0.30-cp38-cp38-win_amd64.whl

    Python-基于sqlalchemy自动化实现curddemo

    SQLAlchemy是Python中最受欢迎的ORM框架之一,它提供了一套完整的解决方案,包括数据库会话管理、事务处理、查询构造器以及强大的SQL表达式语言。本篇将详细讲解如何基于SQLAlchemy自动化实现CRUD(Create, Read, ...

    SQLAlchemy-1.4.50-cp38-cp38-win_amd64.whl.zip

    SQLAlchemy 是一个强大的 Python SQL 工具包和 ORM(对象关系映射)系统,它提供了对多种数据库引擎的全面支持,包括 PostgreSQL、MySQL、SQLite 等。在Python开发中,SQLAlchemy通常用于处理数据库操作,它使得...

    sqlalchemy的基本操作大全

    SQLAlchemy 是一个强大的 Python 数据库 ORM(对象关系映射)框架,它允许开发者使用面向对象的方式来操作数据库,而无需直接编写 SQL 语句。ORM 的核心思想是将数据库中的表映射为 Python 类,表中的行映射为类的...

Global site tag (gtag.js) - Google Analytics