从 python 使用 TSQL(SQL Server 上的 mssql)时,如何为 SQLAlchemy 自动生成 ORM 代码?
Posted
技术标签:
【中文标题】从 python 使用 TSQL(SQL Server 上的 mssql)时,如何为 SQLAlchemy 自动生成 ORM 代码?【英文标题】:How can I autogenerate ORM code for SQLAlchemy when consuming TSQL (mssql on SQL Server) from python? 【发布时间】:2017-08-06 02:26:21 【问题描述】:SQLAlchemy 依赖于我构建这样的 ORM 类:
from sqlalchemy import Column, DateTime, String, Integer, ForeignKey, func
from sqlalchemy.orm import relationship, backref
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class Department(Base):
__tablename__ = 'department'
id = Column(Integer, primary_key=True)
name = Column(String)
是否有工具/脚本/程序可以为我做到这一点?
例如,在 C# 中,我可以将数据项从数据库资源管理器拖放到 VisualStudio 中,并为我自动生成实体类(SQL 到 LINQ)。我正在为 python 寻找类似的东西。我在 VisualStudio 和/或 Spyder 工作。
【问题讨论】:
【参考方案1】:我刚刚成功地使用 sqlacodegen 为我的 MS SQL Server 2014 数据库生成了类。这非常容易;一下子就爱上了!
我正在使用 Python 3.7(如果重要的话)。以下是我在(管理员?)PowerShell 中使用的命令:
pip install sqlacodegen
pip install pymssql
sqlacodegen mssql+pymssql://sql_username:sql_password@server/database > db_name.py
它将在您的当前目录中创建 db_name.py。
然后您可以通过将 db_name.py 移动到与主脚本相同的文件夹并添加 import db_name
来使用这些类。
我没有指定端口,我的server
被设置为简单的计算机名称而不指定安装,即server\installation
。我使用了 sqlacodegen here 的说明和来自 here 的数据库 URL。
【讨论】:
效果很好,谢谢。输出文件确实需要一分钟,所以请耐心等待。【参考方案2】:您是否需要明确定义类,或者在不编写代码的情况下定义它们可以吗?如果后者没问题,那么 SQLAlchemy 自己的automap 可能就足够了。
否则,sqlacodegen 工具看起来应该为您生成代码。
【讨论】:
以上是关于从 python 使用 TSQL(SQL Server 上的 mssql)时,如何为 SQLAlchemy 自动生成 ORM 代码?的主要内容,如果未能解决你的问题,请参考以下文章
如何从 tsql (sql 2005) 中的 utc 日期时间计算本地日期时间?