【python】用 sqlacodegen 将存在的数据库表 转化成model.py

Flask的sqlalchemy对数据库表的模型提供了很多易用的方法。为了使用这些内容,需要将数据库表按照Flask识别的格式创建成Model,但是一般我们都是在已经创建好的数据库环境中开发Python代码,对于已经存在的数据库表,可以通过以下方式来生成models.py

首先,安装

pip install sqlacodegen

然后,在命令行执行

[python] view plain copy
 
 print?
  1. sqlacodegen --noviews --noconstraints --noindexes --outfile d:\models.py mysql://test:test@122.30.100.12:3388/test  

--noviews 不对视图生成model

--outfile 后面跟的是将生成的代码输出到哪个文件保存

详细的参数信息可以查看帮助

[python] view plain copy
 
 print?
  1. sqlacodegen --help  

生成的文件就可以使用了,例如:

[python] view plain copy
 
 print?
  1. import models  
  2. from sqlalchemy import Table, Column, Integer, String, Date, Float, create_engine  
  3. import config  
  4. from sqlalchemy.orm import sessionmaker  
  5. # DB class  
  6. import os,sys,inspect  
  7.   
  8. db = create_engine(config.DB_URI)  
  9.   
  10. S=sessionmaker(bind=db)  
  11. s=S()  
  12. u=s.query(DhBuyerTradeOrderPlace10).first()  
  13. if __name__ == '__main__':  
  14.     print u  
  15.     print u.username  
  16.     print "**************"  
  17.     classlist = []  
  18.     for name, obj in inspect.getmembers(models):  
  19.         if inspect.isclass(obj):  
  20.             print name  
  21.             print obj  
  22.             classlist.append((name.lower(),obj))  
  23.     print classlist  
  24.     print dict(classlist)  
  25.     classdict = dict(classlist)  
  26.     u=s.query(classdict['dhalbumsget10']).first()  
  27.     print u.username  
  28.     print u.password  
  29.     u=s.query(classdict['dhalbumsget10']).all()  
  30.     print u[0].username  
原文地址:https://www.cnblogs.com/yanglang/p/7428884.html