【问题标题】:Autocomplete magic in Flask SQLAlchemyFlask SQLAlchemy 中的自动完成魔法
【发布时间】:2018-12-30 18:46:03
【问题描述】:

当我做下一步时,我看到了 sqlalchemy 的所有方法。

from flask_sqlalchemy import SQLAlchemy

db = SQLAlchemy()
db.func # <- autocomplete magic in PyCharm

它在 PyCharm 中是如何工作的?顺便说一句,pylint 没有看到。

以下代码不起作用。

class Test(object):
    def __init__(self):
        _include_sqlalchemy(self, self.__class__)


db = Test()
db.func  # No suggestions :c

【问题讨论】:

    标签: python autocomplete pycharm flask-sqlalchemy python-3.6


    【解决方案1】:

    这可能是因为 Pycharm 不够聪明,无法意识到 dbSQLAlchemy 的一个实例。 (假设Test() 创建了一个SQLAlchemy 的实例)

    您可以使用类型提示来帮助 Pycharm 识别不同抽象级别的对象。

    如果您使用的是 3.6,则可以添加内联提示(我认为这是最简单的)。

    class Test(object):
        def __init__(self):
            _include_sqlalchemy(self, self.__class__)
    
    
    db:SQLAlchemy = Test() # <-- add a type hint to let pycharm know what db is.
    

    【讨论】:

    • 感谢您的回答。一切都清楚了。我想上课并在那里运行我的方法。这与 SQLAlchemy 无关。我注意到 PyCharm 看到了这样的 hack,我想学习如何为我的代码执行此操作。
    • 如果您不使用 3.6,也可以将一些内联类型提示与 cmets 一起使用。
    • 你不明白我的意思。我想要生成代码的自动完成功能。 flask_sqlalchemy 它的工作原理,这就是为什么我想了解如何。
    • 使用类型提示允许 pycharm 自动完成在抽象层中创建的对象上工作。因此,如果您的 Test() 示例正在创建一个自动完成功能不起作用的对象,那么将 typehint 添加到该变量即可使其工作。 -- gist example
    • my example 更清楚地显示了类测试。我想了解此方法在 flask_sqlalchemy 中的工作原理以及为什么我的选项不起作用。在同一个地方,你会看到 Proxy 类,这是我的目标。这似乎是不可能的,但谁知道呢。
    猜你喜欢
    • 2014-03-14
    • 2021-03-04
    • 2014-04-22
    • 2013-06-16
    • 2014-10-01
    • 2016-04-14
    • 2013-06-26
    • 2015-02-08
    • 2020-10-10
    相关资源
    最近更新 更多