2016-08-23 206 views
6

我正在使用SQLAlchemy和Pycharm,但PyCharm无法看到SQLAlchemy的自动完成功能的方法。Pycharm SqlAlchemy自动完成不起作用

代码:

from flask import Flask 
from flask_sqlalchemy import SQLAlchemy 

app = Flask(__name__) 
app.config['SECRET_KEY'] = 'secret!' 
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///data.sqlite3' 
db = SQLAlchemy(app) 


class User(db.Model): 
    __tablename__ = 'users' 
    id = db.Column(db.Integer, primary_key=True) 
    username = db.Column(db.String(16), index=True, unique=True) 

if __name__ == '__main__': 
    db.create_all() 
    app.run(debug=True) 

例如,如果我想呼叫用户类的SQLAlchemy的方法我必须键入完整的方法名手动User.query.filter_by(用户名= '彼得')第一() Autocomplete example

如何使SQLAlchemy自动完成工作?

1)是,项目被重新加载了几次
2)是的,右键解释器在文件|设置|项目
3)是的,PyCharm不在省电模式
4)是的,我有专业版。

+1

[PyCharm SQLAlchemy autocomplete]的可能重复(http://stackoverflow.com/questions/21793590/pycharm-sqlalchemy-autocomplete) –

回答

3

PyCharm(或任何其他IDE)找不到大多数方法(query()add()commit()等),因为它们不是在flask_sqlalchemy.SQLAlchemy类中定义。 SQLAlchemy方法在初始化期间动态添加到flask_sqlalchemy.SQLAlchemy对象中。您可以在flask_sqlalchemy module找到这个初始化函数:

def _include_sqlalchemy(obj): 
    for module in sqlalchemy, sqlalchemy.orm: 
     for key in module.__all__: 
      if not hasattr(obj, key): 
       setattr(obj, key, getattr(module, key)) 
只是为了测试

:您可以键入from sqlalchemy.orm import Query。我认为PyCharm会发现它的对象很好。

我不能建议任何解决方案,也许别人知道动态添加属性自动完成的可能性。