一尘不染

从现有的MySQL数据库反向工程师SQLAlchemy声明性类定义?

mysql

我已有一个包含约50个表的mysql数据库。

除了为每个表手动编写声明式SqlAlchemy类(如此处所示)外,还有没有我可以针对mysql数据库运行的工具/脚本/命令,它将为数据库中的每个表 生成 声明式样式的python类?

仅以一张表为例(理想情况下将为所有50张表生成),如下所示:

+---------+--------------------+
| dept_no | dept_name          |
+---------+--------------------+
| d009    | Customer Service   |
| d005    | Development        |
| d002    | Finance            |
| d003    | Human Resources    |
| d001    | Marketing          |
| d004    | Production         |
| d006    | Quality Management |
| d008    | Research           |
| d007    | Sales              |
+---------+--------------------+

是否有工具/脚本/命令可以生成包含以下内容的文本文件:

from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()

class Department(Base):
   __tablename__ = 'departments'

   dept_no = Column(String(5), primary_key=True)
   dept_name = Column(String(50))

   def __init__(self, dept_no, dept_name):
       self.dept_no = dept_no
       self.dept_name = dept_name

   def __repr__(self):
      return "<Department('%s','%s')>" % (self.dept_no, self.dept_name)

阅读 283

收藏
2020-05-17

共1个答案

一尘不染

使用sqlautocode

它是一种灵活的工具,可以从现有数据库自动生成模型。

这与SqlSoup略有不同,它使您可以使用表而无需显式定义它们。另一方面,sqlalutocode将生成实际的python代码。

2020-05-17