db = SQLAlchemy()
后,用 db.
时PyCharm的自动完成功能仅能列出 Model
等,如 Column
、 Integer
、 String
等等都无法给出提示。
但打开下载的示例程序:helloflask,确实可以进行完整的提示。
请问需要怎么设置?谢谢!
Pycharm为最新的社区版。
db = SQLAlchemy()
后,用 db.
时PyCharm的自动完成功能仅能列出 Model
等,如 Column
、 Integer
、 String
等等都无法给出提示。
但打开下载的示例程序:helloflask,确实可以进行完整的提示。
请问需要怎么设置?谢谢!
Pycharm为最新的社区版。
你好,请问目前有哪种编辑器或者IDE能较好的支持Flask、及插件(扩展)?
比如楼主说Column
这种提示。谢谢!
我目前使用的是vscode。
大部分库的自动补全都是没问题的,不能补全的只是少量类似 Flask-SQLAlchemy 和 Flask-Marshmallow 这种动态添加属性的库。目前大部分编辑器和 IDE 都不支持自动补全动态添加的属性。我过段时间会尝试给 Flask-SQLAlchemy 解决这个问题。
用db.*
是对自动补全非常不友好的方式,原因grey给出的代码里面有,可以用sqlalchemy
里面本来的对象,db.*
跟这个是一样的:
import sqlalchemy as sa
class Post(db.Model):
title = sa.Column(sa.String(128), nullable=False)
...
我发现有一个方法即使是db.*
也可以自动补全,就是用Kite AI Autocomplete Engine,这个软件对各种语言的自动补全都还挺智能的。尤其是Python,因为它一开始就是用来补全Python代码的,大家可以尝试一下。而且它能通过插件的方式支持VSCode,PyCharm,Atom,Vim等文本编辑器和IDE,免费版本的智能程度也完全不比PyCharm Pro差。
十分感谢,其次除了sqlalchemy外,我发现使用蓝图的时候也是无法自动补全的,比如使用工厂模式时:
def register_blueprints(app):
app.register_blueprint(test_bp, url_prefix="/test")
这里的app.register_blueprint
也是没有自动补全的,对python的理解也不是很足不太清楚这是什么原因导致的,希望大佬们解答。THX~!
新年快乐~
这里的 app
是一个函数接受的参数,编辑器没法知道它有什么属性或方法。
感谢! 李大的回答一针见血, 问题已经解决了。 我在传参的时候做了这样的处理:
def register_blueprints(app:Flask):
app.register_blueprint(test_bp, url_prefix="/test")
再次感谢李大的解答,祝新年快乐!
不客气,新年快乐!
请问这个问题解决了吗?
没有。临时也可以考虑直接手动从 SQLAlchemy 导入这些 API。如果没记错的话, 除了模型类继承的 Model
类要使用 db.Model
,其他函数或类都可以直接从 sqlalchemy
包直接导入:
from sqlalchemy import Column, String, Integer, ForeignKey
from sqlalchemy.orm import relationship, backref
from app.extentions import db
class User(db.Model):
id = Column(Integer, primary=True)
name = Column(String(20))
# ...