python 数据库逆向映射成module 小工具

来源:互联网 发布:电脑录音软件 编辑:程序博客网 时间:2024/06/08 06:24

       最近在学习salAlchemy,在过程中希望找到一种机制,能够根据已存在的数据库的表结构(不同的库,表的数量结构存在差异),自动去调整类和类中列的信息,包括字段之间的关系。虽然最终没有解决,但是找到了一个基于SqlAlchemy的小工具,sqlacodegen。根据官网上的解释,它是一个为SqlAlchemy制作的,能够自动生成模型代码的generator。它也是用来代替sqlautocode这个工具,它们功能相似,但是由于后者对于Python 3和SqlAlchemy新版本支持问题,以及一些bug,被前者取代。


       这个工具的特点:

     (1)支持SqlAlchemy 0.6-1.0版本;

     (2)所产生的代码为declarative形式(一种将列的声明和映射写在一起的形式,SqlAlchemy中常见),几乎跟手写      的没有差别;

     (3)按照PEP 8标准编码;

     (4)准确的定义关系,包括多对多,一对一;

     (5)自动的探测到联系在一起的表和继承

     (6)出色的范围测试(不太明白)


        工具下载:

https://pypi.python.org/pypi/sqlacodegen/

在Python3.4中,自带了pip工具,Python2.X的版本用户可以自己下一个。

       (1)如果有网络可以用,并且已经安装了pip工具,那么找到对应路径,命令行 -pip install sqlacodegen。

       (2)在获取了.whl文件后,用-pip install 文件名.whl同样可以实现安装。

这里要说明的是,在用方式(2)进行安装时,sqlacodegen依赖一个叫inflect的包,需要自行下载后,才能安装sqlacodegen,方法(1)中pip工具会帮用户搞定。


在这里分享一个链接,里面几乎囊括了所有Python要用到的库,http://www.lfd.uci.edu/~gohlke/pythonlibs/


  安装完毕后,在命令行中 -sqlacodegen --help

 会看到如下图所示的结果,根据不同的数据库厂商和help中的提示,就可以对某个库或者某张表进行逆向生成模型了。下面是不同数据厂商的链接例子。链接信息可以参考,sqlAlchemy中create_engine()方法中参数。

          

sqlacodegen postgresql:///some_local_dbsqlacodegen mysql+oursql://user:password@localhost/dbnamesqlacodegen sqlite:///database.db

0 0
原创粉丝点击