Python中大家平时设计数据库表都是用什么工具?

使用软件进行字段关联分析还是直接怼着数据库撸?


Python中大家平时设计数据库表都是用什么工具?
54 回复

Migration


我平时直接用SQLAlchemy的ORM来设计表,在代码里定义模型类。这样表结构就跟代码绑定了,用Alembic做迁移也方便。

比如设计个用户表大概这样:

from sqlalchemy import Column, Integer, String, DateTime, Boolean
from sqlalchemy.ext.declarative import declarative_base
from datetime import datetime

Base = declarative_base()

class User(Base):
    __tablename__ = 'users'
    
    id = Column(Integer, primary_key=True)
    username = Column(String(50), unique=True, nullable=False)
    email = Column(String(100), unique=True, nullable=False)
    password_hash = Column(String(200), nullable=False)
    is_active = Column(Boolean, default=True)
    created_at = Column(DateTime, default=datetime.utcnow)
    updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)
    
    def __repr__(self):
        return f"<User(username='{self.username}', email='{self.email}')>"

这样设计的好处是,改表结构直接改代码,然后生成迁移脚本就行。不用在数据库工具和代码之间来回切换。

当然有些团队会用专门的数据库设计工具,比如MySQL Workbench、pgAdmin这些,或者在线工具如dbdiagram.io。但我觉得对于Python项目来说,直接在代码里定义更直接,特别是团队都用同样的开发流程时。

简单说就是:用ORM在代码里定义表最省事。

makemigrations and migrate?

powerdesigner

sql 语句 + markdown

表太复杂了,也可以这么搞?

migration 新建问题不大,更新有时候不完全,还得手工改

powerdesigner

sql+org
画 ER 图
表结构复杂应该先梳理业务逻辑文档

纯手写。表结构的设计在开写之前心中就已经想好了。

HEIDISQL

heidi+1 缺点是不支持多标签页

日常浏览用 HeidiSQL,直观明了,撸 SQL 用 JetBrains,应该是无敌的。遗憾的是这两个都没有完善的用户管理模块。

sqlalchemy

写好 Mapper 的时候就设计好了

Linux 上用 dbeaver,其它用 heidisql

为什么没有 navicat…我觉得很好用啊

用纸和脑子(◍•̅ ȷ̫ •̅◍)

gnome dia,er 图流程图各种图都搞定,功能不算丰富但是够用

ActiveRecord

phpmyadmin

code first 从 model 生成表结构

如果表的数量多,整个项目的前几稿我一定用手画,之后就用 workbench

先写代码,然后用代码生成建表 sql,再仔细调整一下

为什么我用的是 navicat for mysql

navicat for sqlite

mysql workbench

手写 sql

设计的时候 excel,方便记录改动和更新。最后 pg 使用 pgadmin,sqlite 使用 sqlite expert

PL/SQL ……

用代码啊,

主流的 orm 框架里,把 entity 类之间的关系代码写好,数据库就设计好了 90%,剩下的 10%根据业务加 index 相关的注释就好了

powerdesigner

VSCode 手撸

用的最好的是 excel,因为可以做变更记录,就是表太多了就不好弄。所以 pd 也是要的。

楼上各位手撸的,是在设计数据库么。。。我用 pd 都得改几版才能成型,都是高手啊

当然,如果项目只有十来个表,就当我没说

纸笔 -> PowerDesign -> Navicat.

代码肯定放最后啊

mysqlworkbench
或者直接
laravel migration

直接撸,边做边改

每种数据库基本都带了免费的 GUI 工具了,比如 mysql 的 phpMyAdmin, mysql front (我就用这个)
postgresql pgadmin3, SQL Sever 的 studio

另外还有通用的管理工具, 比如 navicat, 建模工具 PowerDesigner

以我个人的经验来说,建表基本上用免费工具就足够用了,用工具建完表再导出建表语句。
手熟的人直接写 SQL 语句来建表。

PowerDesigner 或者 MySQL Workbench

heidisql 没有自动提示,蛋疼,要不然我真心舍不得换它

Sequel Pro

更新要在版本管理做的啊

所以不用它擼 sql。

Visio 画 ER 图,然后直接撸代码,微调后完成。

ORM 工具自动生成表结构。

以前用 PowerDesinger,现在用 StartUML 直接画 ER 图

把业务理清楚之后,把表结构做出来。写代码中间表不合理的地方再改。

UML 的话工具很多,迁移用 flyway,以前用 liquibase。

回到顶部