sqlalchemy数据模型
sqlalchemy在python里作为orm还是比较有名气的,以下是建立的几个简单模型,完全可和flask的数据持久层分离。
# coding: utf8
from sqlalchemy import Column, String, Integer, DateTime, BigInteger, Numeric, ForeignKey, SmallInteger, create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import create_session, relationship Base = declarative_base()
_db_session = None def get_engine():
return create_engine('mysql+pymysql://root:1234@localhost/wms?charset=utf8', echo=True) def get_session():
if _db_session is None:
engine = get_engine()
return create_session(engine)
else:
return _db_session def create_all():
engine = get_engine()
Base.metadata.create_all(engine) def drop_all():
engine = get_engine()
Base.metadata.drop_all(engine) class Role(Base):
__tablename__ = 'a_role'
code = Column(String(20), primary_key=True)
label = Column(String(50)) class User(Base):
__tablename__ = 'a_user'
id = Column(BigInteger, primary_key=True)
code = Column(String(20), nullable=False, index=True, unique=True)
label = Column(String(50))
pwd = Column(String(50))
create_date = Column(DateTime)
memo = Column(String(50))
role_code = Column(String(20), ForeignKey('a_role.code'))
role = relationship('Role', backref='users') class SupplierClass(Base):
__tablename__ = 'a_supplier_class'
code = Column(String(30), primary_key=True)
label = Column(String(50)) class Supplier(Base):
__tablename__ = 'a_supplier'
id = Column(BigInteger, primary_key=True)
code = Column(String(30), index=True)
label = Column(String(50))
tel = Column(String(30))
address = Column(String(50))
contacts = Column(String(30))
level = Column(SmallInteger)
create_date = Column(DateTime)
memo = Column(String(50))
class_code = Column(String(30), ForeignKey('a_supplier_class.code'))
supplier_class = relationship('SupplierClass', backref='suppliers') class Warehouse(Base):
__tablename__ = 'a_warehouse'
code = Column(String(30), primary_key=True)
label = Column(String(50))
address = Column(String(50))
create_date = Column(DateTime)
memo = Column(String(50))
manager_id = Column(BigInteger, ForeignKey('a_user.id'))
manager = relationship('User') class LocationClass(Base):
__tablename__ = 'a_location_class'
code = Column(String(30), primary_key=True)
label = Column(String(50)) class Location(Base):
__tablename__ = 'a_location'
id = Column(BigInteger, primary_key=True)
code = Column(String(30), index=True)
label = Column(String(50))
max_qty = Column(Numeric(10, 2))
create_date = Column(DateTime)
memo = Column(String(50))
warehouse_code = Column(String(30), ForeignKey('a_warehouse.code'))
manager_id = Column(BigInteger, ForeignKey('a_user.id'))
class_code = Column(String(30), ForeignKey('a_location_class.code'))
manager = relationship('User')
warehouse = relationship('Warehouse')
location_class = relationship('LocationClass') class ItemClass(Base):
__tablename__ = 'a_item_class'
code = Column(String(30), primary_key=True)
label = Column(String(50)) class Item(Base):
__tablename__ = 'a_item'
id = Column(BigInteger, primary_key=True)
code = Column(String(30), index=True) # 物料代码
label = Column(String(100)) # 品名
type = Column(SmallInteger) # 0原材料,1半成品,2成品
class_code = Column(String(30), ForeignKey('a_item_class.code'))
location_id = Column(BigInteger, ForeignKey('a_location.id'))
item_class = relationship('ItemClass') # 物料分类
location = relationship('Location') # 推荐库位
safety_stock = Column(Numeric(10, 2)) # 安全库存
mpq = Column(Numeric(10, 2)) # 最小包装数量
create_date = Column(DateTime)
memo = Column(String(50)) # drop_all()
# create_all()
sqlalchemy数据模型的更多相关文章
- Django 优秀资源大全
版权: https://github.com/haiiiiiyun/awesome-django-cn 转自:https://www.jianshu.com/p/38c4dd6d8e28 Awesom ...
- sqlalchemy学习
sqlalchemy官网API参考 原文作为一个Pythoner,不会SQLAlchemy都不好意思跟同行打招呼! #作者:笑虎 #链接:https://zhuanlan.zhihu.com/p/23 ...
- 20.Python笔记之SqlAlchemy使用
Date:2016-03-27 Title:20.Python笔记之SqlAlchemy使用 Tags:python Category:Python 作者:刘耀 博客:www.liuyao.me 一. ...
- 循序渐进Python3(十)-- 2 -- SqlAlchemy
ORM 对象关系映射(英语:Object Relation Mapping,简称ORM,或O/RM,或O/R mapping),是一种程序技术,用于实现面向对象编程语言里不同类 ...
- python【第十二篇下】操作MySQL数据库以及ORM之 sqlalchemy
内容一览: 1.Python操作MySQL数据库 2.ORM sqlalchemy学习 1.Python操作MySQL数据库 2. ORM sqlachemy 2.1 ORM简介 对象关系映射(英语: ...
- 使用SqlAlchemy时如何方便的取得dict数据、dumps成Json
使用Sqlalchemy可以方便的从数据库读取出python对象形式的数据(吐槽:说实话对象形式也没多方便,还不如我之前从关系型数据库直接读取出dict形式的数据用起来方便,具体参见我以前的文章htt ...
- tornado with MySQL, torndb, django model, SQLAlchemy ==> JSON dumped
现在,我们用torndo做web开发框架,用他内部机制来处理HTTP请求.传说中的非阻塞式服务. 整来整去,可谓之一波三折.可是,无论怎么样,算是被我做成功了. 在tornado服务上,采用三种数据库 ...
- sqlalchemy 映射的小例子
1.多张表映射到一个类 import pandas as pdfrom settings import DATABASESfrom sqlalchemy import create_engineimp ...
- flask SQLALchemy外键及约束
from flask import Flask,session from flask_sqlalchemy import SQLAlchemy import config app = Flask(__ ...
随机推荐
- ko 简单例子
Knockout是在下面三个核心功能是建立起来的: 监控属性(Observables)和依赖跟踪(Dependency tracking) 声明式绑定(Declarative bindings) 模板 ...
- 遗传算法的C语言实现(一):以非线性函数求极值为例
以前搞数学建模的时候,研究过(其实也不算是研究,只是大概了解)一些人工智能算法,比如前面已经说过的粒子群算法(PSO),还有著名的遗传算法(GA),模拟退火算法(SA),蚁群算法(ACA)等.当时懂得 ...
- 按月统计tcode和report使用次数的工具
执行report,输入要查询的日期和user, 工具会按照使用次数从高到低列出输入日期所在的月份内所有该user 曾经使用过的tcode 和report list: REPORT zusertcode ...
- Oracle设置自动递增的方法
1)创建序列: create sequence SEQ_TEST --字段名 minvalue 1 --最小值 maxvalue XXXXX --设置最大值 start wit ...
- REVERSE-极客大挑战-geek2.apk
嗯 一道apk的题目,题目本身并不是很难,但是我用的python却坑了我小半天...不过在纠错的过程中我也学到了不少东西 链接:http://pan.baidu.com/s/1i5LkJDr 密码: ...
- CRYPTO-MD5
这是昨天WHUCTF比赛的一道题目,本属于crypto,其实和crypto没多大关系, 比赛时其实差不多有这种思路了,但不相信自己,就没这样做下去,回来之后,照做了,果然是这样 链接:http://p ...
- Prototype之个人见解
prototype js 的对象比较 由于 js 是解释执行的语言, 那么再代码中出现函数与对象如果重复执行, 会创建多个副本 在代码中重复执行的代码容易出现重复的对象 创建一个 Person 构造函 ...
- Thinkpad T420 指纹开机 win10 解决方案
以前没感觉笔记本上的指纹有什么用,后来无意看到了指纹能开机.便尝试把这个功能给用起来.果然麻烦了些. 1.官网上没有win10的指纹应用软件. 下载了win8的版本,安装后没有问题,可以登录win10 ...
- phonegap android 开发环境搭建
1.下载JDK并安装 http://www.oracle.com/technetwork/java/javase/downloads/index-jsp-138363.html 配置环境变量 ...
- Photoshop制作的海报修改~
经过几天的征求意见,感觉还是要重新制作,于是把颜色删减了不少 . 这次运用了蒙版和渐变,但感觉效果不太好.再改.. 后来觉得给人的单身感有点少.. 不知道感觉如何,但自己觉得比以前好看..