Python 炼金术自动完成

Python 炼金术自动完成,python,sqlalchemy,pyramid,pycharm,Python,Sqlalchemy,Pyramid,Pycharm,我开始评估PyCharm 3专业版,因为我将参与几个Pyramid+SQLAlchemy项目。 我最想做的事情之一是SQLAlchemy自动完成 我按照说明创建了一个新的带有炼金术支架的启动项目。我还为这个项目使用的解释器和虚拟环境安装了SQLAlchemy包 另外,当我为这段代码创建一个新的pycharm项目时,IDE建议我安装pyramid、sqlalchemy和其他软件包。当然,我接受了这个建议,让IDE安装所有这些软件包 在models.py文件中,DBSession声明如下: DBSe

我开始评估PyCharm 3专业版,因为我将参与几个Pyramid+SQLAlchemy项目。 我最想做的事情之一是SQLAlchemy自动完成

我按照说明创建了一个新的带有炼金术支架的启动项目。我还为这个项目使用的解释器和虚拟环境安装了SQLAlchemy包

另外,当我为这段代码创建一个新的pycharm项目时,IDE建议我安装pyramid、sqlalchemy和其他软件包。当然,我接受了这个建议,让IDE安装所有这些软件包

models.py
文件中,DBSession声明如下:

DBSession = scoped_session(sessionmaker(extension=ZopeTransactionExtension()))
在views.py文件中,DBSession的使用方式如下:

one = DBSession.query(MyModel).filter(MyModel.name == 'one').first()
因此,我开始使用IDE,并做了如下操作:键入DBSession。IDE只是给了我一些建议,其中没有列出“查询”功能。然后我尝试键入:
DBSession.query(MyModel)
。然后按Ctrl+Space尝试获取建议,并显示“无建议”消息

我真的很想知道我可以在我的DBSession变量上使用的函数的SQLAlchemy建议(如
filter
filter\u by
first
,等等)。我想说这对我来说是强制性的:)


我有什么遗漏吗?或者,PyCharm不支持这一点?

请注意,本教程说明:

本指南是为PyCharm 2.7.3编写的,尽管许多主题适用于PyCharm 3

在PyCharm 3 Professional中,安装金字塔并开始使用脚手架要容易得多。请参见我的视频教程之一,具体时间为1:17

此外,如果事情没有按预期的那样进行,你可能会想放弃你的项目,重新开始

PyCharm 3专业版如下

  • 代码洞察(2.6+)
  • 在图表中查看数据库结构的可能性。请参阅使用图表一节
  • 代码完成和解析。(3.0+)

请参阅有关如何使用的更多信息。

我发现解决此问题的方法(从web上的某个地方获得)是键入提示DBSession实例,如下所示:

DBSession = scoped_session(sessionmaker(extension=ZopeTransactionExtension()))
""":type: sqlalchemy.orm.Session"""

在此之后,代码完成似乎在项目中的任何地方都可以正常工作

我在变量赋值后使用类型声明:

从sqlalchemy导入创建引擎
从sqlalchemy.engine导入引擎
...
引擎=创建引擎(连接字符串,最大溢出=10)
引擎:引擎
为了在for循环中使用变量,我使用了:

for table, meta in tables.items():
    meta: Table
    pass
其中,
tables
sqlalchemy.orm.mapper.mapper
table
为导入类型:

from sqlalchemy import create_engine, Table

如果有人现在到了这里,我所看到的解决这个问题的最好办法就是找到。要保存该文件,请单击:

从contextlib导入contextmanager
从键入import ContextManager开始
@上下文管理器
def会话()->ContextManager[会话]:
收益会话(…)

谢谢史蒂夫。你的视频非常有用!不幸的是,我重新开始并使用“alchemy”脚手架创建了一个新的金字塔项目,但仍然无法获得DBSession sqlalchemy对象的任何代码完成(还再次查看了“代码完成”信息)。仍在与此抗争,并试图找出如何在30天的试用期结束前让sqlalchemy自动完成。如有其他建议,我们将不胜感激。谢谢!在我看来,PyCharm社区版与专业版不同,它不支持自动完成。您使用的是虚拟环境吗?是的,我使用的是虚拟环境,但我意识到这可能与PyCharm无关,因为它可能无法推断某个变量在编辑器中属于某一类型。因此,我必须学会在没有自动完成的情况下生活。转到
文件>设置>Python解释器
并确保选择了安装SQLAlchemy的虚拟环境。有时,它会选择错误的解释器,而您将失去自动完成支持。@Inauld,我对此进行了检查,并选择virtualenv作为项目的python解释器。是否一定要使virtualenv位于同一台计算机上的虚拟机中?非常感谢!你太棒了!修正了我的问题!!编码时喝太多咖啡!!再次感谢!