Python——alembic数据库ORM模型的迁移与映射

2023-05-16

Python——alembic数据库ORM模型的迁移与映射

alembic 作用:

方便数据库与ORM模型的迁移与映射

alembic 安装:

pip install alembic

alembic 用法:

1、第一步:

创建ORM模型, .py文件

# from django.db import models

# Create your models here.
from sqlalchemy import Column, Integer, String, ForeignKey, Date, Table, Text, DateTime, func, BigInteger, UniqueConstraint, Date, \
    Float, Boolean, text, LargeBinary, UnicodeText
from sqlalchemy.ext.declarative import declarative_base, declared_attr



class MyBase(object):

    @declared_attr
    def __tablename__(cls):
        return cls.__name__.lower()

    __table_args__ = {'mysql_engine': 'InnoDB'}
    id = Column(Integer, primary_key=True, comment='主键')
    create_time = Column(DateTime, server_default=func.now())

# Base = declarative_base()


class UidMixin(object):
    uid = Column(Integer, server_default="0", comment='用户ID')


class SoftDeleteMixin(object):
    deleted = Column(Boolean, server_default=text('0'))


class PersonMixin(object):
    """人员信息"""
    name = Column(String(32), comment='姓名')
    id_no = Column(String(18), comment='身份证号')
    mobile = Column(String(11), comment='手机号')
    email = Column(String(64), comment='电子邮箱')


class CompanyMixin(object):
    """企业信息"""
    certificate = Column(String(64), comment='企业机构代码')
    register_addr = Column(String(64), comment='注册地址')
    contact = Column(String(12), comment='企业联系人')


Base = declarative_base(cls=MyBase)

2、第二步

打开CMD窗口,进入到我们当前项目虚拟环境中

3、第三步

创建一个alembic仓库,输入以下命令:
alembic init alembic
注:第一个alembic是alembic语法,类似git。第二个init代表初始化,第三个alembic代表仓库名,你也可以命名其它名字,这里为了方便理解,所以采用了alembic这一名字

4、第四步

找到alembic.ini配置文件,修改sqlalchemy.url,代码如下:
sqlalchemy.url = mysql+pymysql://root:admin@localhost/alembic_demo
注:和数据库连接信息一样

5、第五步

找到env.py文件,修改target_metadata参数:
target_metadata = models.Base.metadata

6、第六步:

创建数据库迁移文件,命令如下:
alembic revision --autogenerate -m “first commit”

注:alembic映射到数据库流程如下

ORM模型 ——迁移文件——映射到数据库中

7、第七步:

将迁移文件映射到数据库中,命令如下:

alembic upgrade head

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python——alembic数据库ORM模型的迁移与映射 的相关文章

  • D435/D435i使用技巧

    D435 D435i使用技巧 D435 D435i是目前市场上使用最为方便的双目深度相机 虽然淘宝上其价格有些让人望而却步 xff0c 但是咸鱼上成色不错的D435 D435i 价格就在1000左右 xff0c 依旧是自主无人机视觉定位和感
  • PX4 imu传感器配置

    PX4 传感器配置 坐标系定义 旋转变化 reference 在机器人中各个坐标系之间的变换是非常常见的 xff0c 而在ROS tf 工具中 xff0c 以及Eigen 中 我们常常会见到RPY的旋转表示和四元数的旋转表示 当然学航空出生
  • PX4常用sh命令

    PX4常用sh命令 基于NUTTXnsehll的设计 xff0c PX4还自定义了一些sh命令 xff0c 可以在调试飞控时起到重要作用 这些命令在PX4开发者手册中 xff0c 都有提到 但是为了方便后期使用 xff0c 这里再单独做一下
  • 强化学习介绍(RL)

    一 简介 机器学习有三大分支 xff0c 监督学习 无监督学习和强化学习 xff0c 强化学习是系统从环境学习以使得奖励最大的机器学习 人工智能中称之为强化学习 xff0c 在控制论中被称之为动态规划 xff0c 两者在概念上是等价的 也被
  • 深度学习中高斯噪声:为什么以及如何使用

    来源 xff1a DeepHub IMBA 本文约1800字 xff0c 建议阅读8分钟 高斯噪声是深度学习中用于为输入数据或权重添加随机性的一种技术 在数学上 xff0c 高斯噪声是一种通过向输入数据添加均值为零和标准差 的正态分布随机值
  • 面向算法选择的元学习研究综述

    来源 xff1a 专知 本文为综述介绍 xff0c 建议阅读5分钟本文对基于元学习的算法选择进行综述总结 xff0c 为研究人员了解相关领域的发展现状提供参考 摘要 xff1a 随着人工智能的快速发展 xff0c 从可行的算法中选择满足应用
  • tortoise git 冲突解决

    1 背景 使用tortoise git 解决conflict 2 解释 Git进行同步的时候 xff0c 经常会出现冲突 xff0c 有时候冲突的选项会有三种选项 xff1a 1 Resolved xff1a 直接把文件标识为冲突已经解决
  • win11旗舰版安装WSL子系统和环境-7搭建图形化界面和Docker容器

    搭建图形化界面和Docker容器 Win10Linux子系统 xff08 WSL xff09 图形界面的安装 https blog csdn net NovaSliver article details 83190269 utm mediu
  • 推荐几款Nodejs实现的web框架

    本文首发于个人博客 胖蔡叨叨叨 xff0c 点击可查看原文 Nodejs在近些年可以说是发展异常的迅猛 xff0c 由于同样使用的js原因 xff0c 对于前端开发人员可以说是非常的友善了 xff0c Github上有关nodejs的贡献也
  • chatgpt_academic学术优化(配置使用教学-保姆级)

    一 Anaconda 下载及安装 1 官网下载链接 xff1a www anaconda com 2 安装 xff08 1 xff09 下载完成后 xff0c 双击exe进行安装 xff08 2 xff09 安装完成后 xff0c 点击An
  • C++正则表达式regex_match,regex_search和regex_replace简单使用

    C 43 43 正则表达式 零 前言一 说明二 测试代码三 运行结果 零 前言 正则表达式是非常强大的文本处理和字符串处理工具 xff0c C 43 43 11之前一直没有引入正则表达式 xff0c 只能使用boost库中的 xff0c C
  • debian桌面启动不了的问题

    怎么发生的 xff1f 昨天安装了一堆的软件后 xff0c 发现桌面没法在桌面进行应用程序切换 xff0c 然后就重启了一下系统 xff0c 想恢复 xff0c 结果 xff0c 重启后 xff0c 开机就直接进shell了 分析 做了一些
  • Byobu 命令行终端的强大利器

    My heart is in the work xff01 工作以来接触到Linux系统的地方挺多 xff0c Android的源码下载 xff0c 服务器的连接等等 xff0c 用的越多越发现Linux的强大与方便 一次偶然间 xff0c
  • .NET下基于API封装的DirectUIHWND窗体访问

    直接切入正题 1 添加引用 项目 gt 添加引用 gt C Progmme 1 MSN Messenger msnmsgr exe 2 using MessengerAPI 声明 private MessengerAPI Messenger
  • 漫话Kubernetes的网络架构,该用NodePort还是Ingress还是load balancer?

    目录 一 基本概念 1 Kubernetes pod 2 Kubernetes service 3 Kubernetes NodePort 4 Kubernets Ingress 5 Kubernetes loadbalancer 二 从实
  • 彻底理解git 本地分支与远程分支,以及git pull与git fetch的区别, 以及git status输出的“Your branch is behind xxx”

    git 本地分支 xff1a 当clone一个远程repo之后 xff0c 默认会新建一个master或main的本地分支 比如 xff1a git branch a main remotes origin HEAD gt origin m
  • 深入分析OpenFlow协议

    文章目录 OpenFlow是什么 xff1f xff1f xff1f OpenFlow的起源与发展OpenFlow工作原理OpenFlow组件OpenFlow控制器1 NOX POX2 ONOS3 OpenDaylight OpenFlow
  • ubuntu登录输入用户名密码之后重新跳回登录界面

    Ubuntu 14 04 今天学习鸟哥的私房菜使用了命令startx xff0c 通过注销重新登录 xff0c 就发生了如题的情况 在登录界面输入正确的用户名密码 xff0c 显示器黑屏一段时间 xff0c 然后重新跳转回登录界面 重启无效
  • npm install 报错:verbose stack Error: unable to resolve dependency tree

    环境 npm 64 7 24 1 node 64 v12 16 2 一 分析原因 xff1a 经排查 xff0c 1 发现有组件package json中有peer dependency xff0c 指明了angular 7 x 的版本 x
  • Python实现单链表

    单向链表也叫单链表 是链表中最简单的一种形式 它的每个节点包含两个域 一个信息域 元素域 和一个链接域 这个链接指向链表中的下一个节点 而最后一个节点的链接域则指向一个空值 nbsp 表元素域elem用来存放具体的数据 链接域next用来存

随机推荐