zoukankan      html  css  js  c++  java
  • SQLAlchemy 使用(一)创建单一model

    前言

     最近项目等待前端接接口,比较空闲.就想学习一些新东西.学啥呢?考虑到ORM的易用性,还是学习一下ORM.那么与Flask搭配的ORM有 flask-sqlalchemy 但是该组件专为Flask定制.

    如 JWT与Flask-JWT,考虑到适用性,还是觉得学 SQLAlchemy好一些.

    正文

    安装

    要想使用 SQLAlchemy,首当其冲的当然是安装啦

    pip install sqlalchemy

    建立model文件

    然后我们在某个目录下新建一个 models.py 文件 (文件名叫models完全是因为我想到ORM脑子里第一个就是Django哈)

    引入

    我们引入相关模块

    from sqlalchemy import create_engine
    from sqlalchemy.orm import sessionmaker
    from sqlalchemy.ext.declarative import declarative_base
    from sqlalchemy import Column, String, Integer

    值得注意的是,最后一个引入引入的是各个字段(比如varchar等,建立model用,所以可能不止这几个,可以按情况来)

    字段对照及约束

    字段对照表如下

    类型名说明
    Integer 整形
    SmallInteger 小整形
    BigInteger 长整形
    Float 浮点形
    String varchar
    Text 长文本 text
    Boolean tinyint
    Date 日期 datetime.date
    Time 时间 datetime.time
    DateTime 日期和时间 datetime.datetime

    约束如下

    选项说明
    primary_key 主键
    unique 唯一索引
    index 常规索引
    nullable 是否为空 默认为True
    default 默认值
    ForeignKey 外键

    连接数据库

    我们在操作数据库前需要先连接数据库

    这里以 pymysql 为例

    # 用户名:密码@访问地址:端口/数据库?编码方式
    engine = create_engine('mysql+mysqldb://root:***@***:***/website?charset=utf8mb4')
    
    # 创建DBSession类型
    DBSession = sessionmaker(bind=engine)
    
    # 创建Base基类
    Base = declarative_base()

    这时候你可以运行该文件测试是否成功

    如果报  ModuleNotFoundError: No module named 'MySQLdb'  错误是你缺少模块,安装即可(每个操作系统对应的模块不一样)

    以下的如果pip安装失败,使用

    yum install mysql-devel gcc gcc-devel python-devel
    pip install mysqlclient
    easy_install mysql-python (mix os)
    pip install mysql-python (mix os)
    apt-get install python-mysqldb (Linux Ubuntu)
    cd/usr/ports/databases/py-MySQLdb && make install clean (FreeBSD)
    yum install MySQL-python (linux Fedora, CentOS)
    pip install mysqlclient (Windows)

    创建 model

    下面我们写model

    定义的字段和约束参考上面的表

    class AdminUser(Base):
        # 用户表
        __tablename__ = 'admin_user'   # 表名
        id = Column(Integer, primary_key=True)  # 主键
        username = Column(String(12), nullable=False, index=True)  # 用户名,Varchar12位,不可为空,常规索引
        pwd = Column(String(256), nullable=False)  # 密码,不可为空
        token = Column(String(256))  # token

    想要将表应用到数据库,在最下面加上

    Base.metadata.create_all(engine)

    运行py文件即可

    但是这种方式只能新建表,不能修改/删除表字段

    这个时候我们需要该模块作者的另一力作  alembic

    alembic的教程

  • 相关阅读:
    c语言结构体数组引用
    c语言结构体数组定义的三种方式
    如何为SAP WebIDE开发扩展(Extension),并部署到SAP云平台上
    SAP SRM ABAP Webdynpro和CFCA usb key集成的一个原型开发
    使用SAP API portal进行SAP SuccessFactors的API测试
    SAP UI5应用里的页面路由处理
    在SAP WebIDE Database Explorer里操作hdi实例
    如何使用SAP事务码SAT进行UI应用的性能分析
    使用SAP WebIDE进行SAP Cloud Platform Business Application开发
    SAP CRM WebClient UI ON_NEW_FOCUS的用途
  • 原文地址:https://www.cnblogs.com/chnmig/p/10446341.html
Copyright © 2011-2022 走看看