Flask 将数据库表转换为sqlalchemy models

SQLAlchemy代码生成器
介绍如何使用sqlacodegen工具快速生成Python的SQLAlchemy ORM模型代码,提高开发效率。

在开发Flask web应用的时候,习惯了用mysql workbench 设计数据库表,直接写Python的SQLAlchemy 还是觉得慢。自然会想到有没有工具可以直接从数据库生成Python的SQLAlchemy呢, sqlacodegen 正好满足需求。

使用步骤。

1. 安装sqlacodegen

pip install sqlacodegen

2. 生成SQLAlchemy 命令

sqlacodegen mysql://root:password@127.0.0.1/crm
# coding: utf-8
from sqlalchemy import Column, Float, Integer, SmallInteger,
from sqlalchemy.ext.declarative import declarative_base


Base = declarative_base()
metadata = Base.metadata


class Attribute(Base):
    __tablename__ = 'attribute'

    id = Column(Integer, primary_key=True)
    attribute = Column(String(128, u'utf8_unicode_ci'))
    att_value = Column(String(255, u'utf8_unicode_ci'))
    serivce_id = Column(Integer)
    description = Column(String(255, u'utf8_unicode_ci'))


你可以使用sqlalchemy的declarative_base()函数来定义一个基类,然后通过继承这个基类来定义你的数据库类。下面是一个简单的示例代码: ```python from sqlalchemy import Column, Integer, String, create_engine from sqlalchemy.ext.declarative import declarative_base Base = declarative_base() class User(Base): __tablename__ = 'users' id = Column(Integer, primary_key=True) name = Column(String(50)) age = Column(Integer) engine = create_engine('sqlite:///example.db') Base.metadata.create_all(engine) ``` 在这个例子中,我们先定义了一个基类`Base`,然后通过定义一个继承自`Base`的`User`类来定义一个数据库类。`User`类中的`__tablename__`属性指定了名,`id`、`name`和`age`属性则对应了中的三个列。 最后,我们通过`create_engine()`函数创建了一个数据库引擎,然后调用`Base.metadata.create_all()`方法自动创建了对应的数据库。 这样,你就可以通过实例化`User`类来进行数据库操作了,例如: ```python from sqlalchemy.orm import sessionmaker Session = sessionmaker(bind=engine) session = Session() user = User(name='Alice', age=18) session.add(user) session.commit() users = session.query(User).all() for user in users: print(user.id, user.name, user.age) ``` 这个例子中,我们先通过`sessionmaker()`函数创建了一个数据库会话类`Session`,然后通过`Session()`方法创建了一个会话对象`session`。接着,我们实例化了一个`User`对象`user`并将其添加到会话中,并通过`commit()`方法提交了事务。最后,我们通过`query()`方法查询所有用户并打印了其信息。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值