python数据库操作之sqlalchemy逆向工程

python数据库操作之sqlalchemy逆向工程依赖安装pipinstallsqlacodegen数据库配置config.pyimportosHOST=’localhost’PORT=3306USERNAME=’root’PASSWORD=’root’DB=’demo’DB_URI=f’mysql+pymysql://{USERNAME}:{PASSWORD}@{HOST}:{PORT}/{DB}’#自动生成modelsos.system(f’sqlacodegen{DB_URI}

大家好,又见面了,我是你们的朋友全栈君。

依赖安装

pip install sqlacodegen

数据库配置config.py

import os

from sqlalchemy import create_engine
from sqlalchemy.engine import Engine
from sqlalchemy.orm import declarative_base, sessionmaker, Session

HOST = 'localhost'
PORT = 3306
USERNAME = 'root'
PASSWORD = 'root'
DB = 'demo'

DB_URI = f'mysql+pymysql://{USERNAME}:{PASSWORD}@{HOST}:{PORT}/{DB}'

# 自动生成models
os.system(f'sqlacodegen {DB_URI} > models.py')

# 操作数据句柄
engine: Engine = create_engine(DB_URI)
Base = declarative_base(engine)
session: Session = sessionmaker(engine)()

右键运行config.py,会在当前目录生成models.py模型文件如下,该文件最好不要改动,后面数据库表改动的话,直接重新生成就好。

# coding: utf-8
from sqlalchemy import Column, DateTime, Integer, SmallInteger, String, TIMESTAMP, text
from sqlalchemy.dialects.mysql import TINYINT, VARCHAR
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()
metadata = Base.metadata


class Admin(Base):
    __tablename__ = 'admin'

    id = Column(Integer, primary_key=True)
    name = Column(String(50))
    password = Column(String(50))
    status = Column(Integer)
    create_time = Column(DateTime)
    update_time = Column(DateTime)


class AdminRole(Base):
    __tablename__ = 'admin_role'

    id = Column(Integer, primary_key=True)
    user_id = Column(Integer, nullable=False, comment='用户id')
    role_id = Column(Integer, nullable=False, comment='角色id')
    create_time = Column(TIMESTAMP, nullable=False, server_default=text("CURRENT_TIMESTAMP"), comment='创建时间')

操作数据库

from orm.config import session
from orm.models import Admin


session.add(Admin(name='张三丰', password='123456', status=1))
session.commit()
# 查询数据
admin__all = session.query(Admin.id).all()
print(admin__all)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/150712.html原文链接:https://javaforall.net

(0)
上一篇 2022年6月22日 下午5:36
下一篇 2022年6月22日 下午5:36


相关推荐

  • eclipse经常卡死的解决方法总结_eclipse运行一段时间后死机

    eclipse经常卡死的解决方法总结_eclipse运行一段时间后死机使用eclipse3.6版本时,每当用alt+/或.来自动补全代码时,eclipse经常会卡死。这是eclipse3.6版本的一个bug,网上有朋友直接选择打补丁,也有人配置eclipse的Contentassist延时加长来解决这个问题。既然是版本问题,还是直接治标好了,升级新版本的eclipse解决这个问题:Help->checkforupdates选择要更新的组件

    2022年10月10日
    6
  • J2EE之普通类载入web资源文件的方法

    J2EE之普通类载入web资源文件的方法

    2021年12月1日
    54
  • Google Borg论文[通俗易懂]

    Google Borg论文[通俗易懂]Borg的论文逐字翻译,拒绝机器翻译,有一些自己的理解,不一定对,作为参考就行

    2025年8月20日
    5
  • SM2246EN+闪迪15131

    SM2246EN+闪迪15131由于正常的SM2246EN开卡工具不会有闪迪15131的数据,所以我们要先进行一点骚操作A773=SanDisk,1Tbit(16K),15131SanDisk,1Tbit(16K),15131=45,3C,A5,93,7E,D0,2,08,10,0,4036,4096,2,9,5,256,4,16,1280,3,180,8F,27,30,2,5F,21,29,1,2,1,52,51,0,A2,0,1,0,0,C0,99,99,99,99,12,26,99,99,77,77,77,77,0,0,..

    2022年6月11日
    72
  • 从零开始学习UCOSII操作系统2–UCOSII的内核实现「建议收藏」

    从零开始学习UCOSII操作系统2–UCOSII的内核实现「建议收藏」从零开始学习UCOSII操作系统2–UCOSII的内核实现参考书籍:《嵌入式实时操作系统μCOS-II原理及应用》、《嵌入式实时操作系统uCOS-II邵贝贝(第二版)》1、任务的结构–任务控制块首先这个任务控制块是非常的大的,这里面使用很多的宏定义,估计是可以让使用者使用的时候按需配置。所以这里只是整理一些必须要用到的功能,不常用的不讲,讲了就会变成一本书了。(1)任务的关键 OS_ST…

    2022年6月4日
    47
  • 一、为什么要是用Redis?

    一、为什么要是用Redis?前言随着大数据时代的来临 随之而来的三高问题 高并发 高性能 高可用 也随之而来 数据库的写入压力增加 读写集中在一个数据库上让数据库不堪重负 大部分网站开始使用主从复制技术来达到读写分离 以提高读写性能和读库的可扩展性 MySQL 的 master slave 模式成为这个时候的网站标配了 MySQL 数据库也经常存储一些大文本的字段 导致数据库表非常的大 在做数据库恢复的时候就导致非常的慢 不容易快速恢复数据库 关系数据库很强大 但是它并不能很好的应付所有的应用场景 MySQL 的扩展性差 需要复杂的技

    2026年1月18日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号