1 序列对象

1.1 创建连接

import sqlalchemy
uri = "postgresql://test:123456@127.0.0.1:5432/test"
engine = sqlalchemy.create_engine(
uri, pool_size = 80, max_overflow = 20, pool_recycle = 3600
)

1.2 创建序列

from sqlalchemy import Sequence
seq = Sequence('SEQ_01')
# 创建名为SEQ_01的序列
seq.create(bind=engine)
# 删除序列
seq.drop(bind=engine)

1.3 获取现有序列

获取序列列表

from sqlalchemy import inspect
insp = inspect(engine)
# list
insp.get_sequence_names()

获取序列对象,并操作

from sqlalchemy import Sequece, MetaData
metadata = MetaData(bind=engine)
seq = Sequence('seq_name', metadata=metadata)
# 取值
seq.execute()

2. 作为主键使用

用于构建主键,在建表时同时构建,插入记录时不需要赋值。

2.1 一般形式

from sqlalchemy.ext.declarative import declarative_base, DeferredReflection
from sqlalchemy import Column, Sequence
from sqlalchemy.dialects.postgresql import Integer, VARCHAR
Base = declarative_base()class User(Base):__tablename__ = 'user'__table_args__ = ({'comment': '人员'})id= Column(Integer, Sequence('SEQ_01'), primary_key=True, comment='人员编号')name = Column(VARCHAR(50), nullable=False, comment='姓名')number= Column(VARCHAR(50), nullable=True, comment='号码')# 创建表的同时创建序列
User.__table__.create(bind = engine)

2.2 在flask中使用

class User(db.Model):__tablename__ = 'user'__table_args__ = ({'comment': '人员'})id= Column(Integer, Sequence('SEQ_01'), primary_key=True, comment='人员编号')name = Column(VARCHAR(50), nullable=False, comment='姓名')number= Column(VARCHAR(50), nullable=True, comment='号码')def __init__(self, **kwargs):super().__init__(**kwargs)

2.3 构造字符串序列

序列本身是整数型,直接通过序列构造的id只能是整数形式。有时候需要在id中包含一些信息,或者与其它表的id作区分,因而直接用序列是不行的。以下基于原始序列构建形如‘C00001’字符串型序列。

class User(db.Model):__tablename__ = 'user'__table_args__ = ({'comment': '人员'})seq = Sequence('SEQ_01', metadata=db.Model.metadata)id= Column(VARCHAR(6), seq, primary_key=True, comment='人员编号')name = Column(VARCHAR(50), nullable=False, comment='姓名')number= Column(VARCHAR(50), nullable=True, comment='号码')def __init__(self, **kwargs):super().__init__(**kwargs)if not self.id:self.id = self.next_id()def next_id(self):with db.engine.connect() as conn:nextid = conn.execute(self.seq)res = 'C' + str(nextid).zfill(5)return res
new_record = User(name = 'muscle')
db.session.add(new_record )
db.session.commit()

sqlalchemy sequence相关推荐

  1. sqlalchemy.exc.InternalError: (pymysql.err.InternalError) Packet sequence number wrong - got 40 expe

    sqlalchemy.exc.InternalError: (pymysql.err.InternalError) Packet sequence number wrong - got 40 expe ...

  2. 运用SQLAlchemy

    result = engine.execute(s) for row in result: Info["UserId"]=row[0] Info["UserTitle&q ...

  3. 【SQLAlchemy】PostgreSQL的自增长主键定义

    2019独角兽企业重金招聘Python工程师标准>>> #coding=utf-8 #!/usr/bin/env pythonfrom sqlalchemy import creat ...

  4. 【Python】SQLAlchemy:session何时commit,何时close?

    SQLAlchemy:session何时commit,何时close? 参考阅读:SQLAlchemy - 官方文档 官方文档说明了关于什么是session,以及如何创建session.如何使用ses ...

  5. SQLAlchemy in 查询空列表问题分析

    问题场景 有model Account,SQLAlchemy 查询语句如下: query = Account.query.filter(Account.id.in_(account_ids)).ord ...

  6. PostgreSQL and SQLAlchemy [ubuntu]

    文章目录 PostgreSQL 安装PostgreSQL 常用PostgreSQL命令 常用PostgreSQL操作 修改用户密码 添加用户并设置密码 创建数据库并指定一个拥有者 连接另一个数据库 删 ...

  7. SQLALchemy (ORM工具)[PostgreSQL为例]

    文章目录 SQLAlchemy Basics Tutorial Install a Postgres server locally and create a database Install requ ...

  8. sqlalchemy 踩过的坑

    记录下Sqlalchemy遇到的问题,不定时更新. 设置主键为非自增 sqlalchemy 在sql server中默认主键是自增的,如果在数据库设置的主键不是自增的,这个时候插入就会出现异常: 提示 ...

  9. Python3下基于bs4和sqlalchemy的爬虫实现

    本文来自网易云社区 作者:王贝 小学生现在都在学python了,作为专业程序员当然不能落下了,所以,快马加鞭,周六周末在家学起了python3,python3的基本语法比较简单,相比于Java开发更加 ...

最新文章

  1. 确定有限状态机和非确定有限状态机详解 包含Java实现源码(Nondeterministic finite automata)
  2. python3 报错 ‘builtin_function_or_method‘ object has no attribute 解决方法
  3. 读书笔记《锋利的jQuery》
  4. python霍夫变换检测直线_OpenCV-Python教程(9、使用霍夫变换检测直线)
  5. SQL基础操作_8_基础概念
  6. 郑州大学软件学院 大学生创新创业选拔赛章程
  7. CADENCE ORCAD原理图导出FPGA UCF的方法
  8. php代码里加图片,php如何添加图片
  9. mysql 安装1364_安装完MySQL,在配置最后一步报错error Nr.1364
  10. 完全重构一个项目的前端代码
  11. Android学习笔记--菜单
  12. 路由器工作原理与配置
  13. mac 锤子android助手,苹果电脑连安卓就靠它了 锤子Smartisan点评
  14. 前后端交互之form表单和模板引擎
  15. Windows 下启动tomcat
  16. 五大电影三部曲的DVD
  17. 字体属性-参数图解-基线
  18. 【SQL】查询表中姓名“王”开头,并且只有二个字的数据
  19. 对先前的CLAY对百度知道进行的XSS漏洞的payload进行分析
  20. BasicRF之中断接收basicRfRxFrmDoneIsr

热门文章

  1. 六个unity开源项目分享
  2. python基础____学习笔记17 (命令行参数解析)
  3. 启动另外的一个应用程序的Activity(三种方式)
  4. “@Getter” is not applicable to field
  5. PCI Express解析——系列文章【5】:PCIe原理分析之——PCI Express 配置解析(BDF、BAR)、 MEM Read举例
  6. 牛郎织女式的爱情——双向搜索
  7. STM32F103ZE串口笔记
  8. 一个srt字幕分割工具
  9. 数据库查询(连接查询)
  10. HTML上的ul li标签消除,去掉ul li 前面的点与空白(div+css)