Che*_*day 10 python sqlalchemy autocomplete pycharm flask-sqlalchemy
我正在使用SQLAlchemy和Pycharm,但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)
Run Code Online (Sandbox Code Playgroud)
例如,如果我想调用User类的SQLAlchemy方法,我必须手动输入完整的方法名称User.query.filter_by(username ='peter').first() 自动完成示例
如何为SQLAlchemy进行自动完成工作?
1)是的,项目被多次重新加载
2)是的,文件中的右侧翻译| 设置| 项目
3)是的,PyCharm没有处于省电模式
4)是的,我有专业版.
小智 14
class User(db.Model):
query: db.Query # Type hint here
__tablename__ = 'users'
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(16), index=True, unique=True)
Run Code Online (Sandbox Code Playgroud)
PyCharm(或任何其他IDE)无法找到的大多数方法(query(),add(),commit()等),因为它们没有在定义flask_sqlalchemy.SQLAlchemy类.SQLAlchemy方法flask_sqlalchemy.SQLAlchemy在初始化期间动态添加到对象.您可以在flask_sqlalchemy模块中找到此初始化函数:
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))
Run Code Online (Sandbox Code Playgroud)
仅供测试:您可以输入from sqlalchemy.orm import Query.我认为PyCharm会发现它的对象很好.
我不能建议任何解决方案,也许这里的其他人知道动态添加属性自动完成的可能性.