使用Sqlalchemy自动生成models实体类

Python3也是可以支持的。

记录下自动生成models文件的python包sqlacodegen 
sqlacodegen已经加入pypi,只需要使用pip install sqlacodegen就可以安装了 
安装后即可运行命令生成models.py文件了 
假设数据库连接字符串是: mysql://root:root@127.0.0.1:3306/mydb 
使用命令:sqlacodegen mysql://root:root@127.0.0.1:3306/mydb > models.py即可在当前目录生成models.py文件 
查看了下生成的models.py文件,可以符合PEP8规范,可生成视图类,会根据有没有主键决定是不是meta table,可以生成外键,就目前的使用没有出现过问题。

如果出现python3提示错误“ImportError: No module named 'MySQLdb'”

项目在转到python3.7时,原先的导入MySQLdb模块都提示无法导入,pip install mysqldb也安装失败。 
问题原因: 
python2和python3在数据库模块支持这里存在区别,python2是mysqldb,而到了python3就变成mysqlclient,

pip install mysqlclient即可。


 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用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()`方法查询所有用户并打印了其信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值