【问题标题】:No value for argument 'dml' in method call方法调用中参数“dml”没有值
【发布时间】:2019-01-03 22:49:55
【问题描述】:

我正在尝试建立一个数据库,该数据库将根据 ID 号存储故事信息。现在我正在努力将上述信息放入表格中。我正在学习python和sql,所以请耐心等待。

Pylint 告诉我,在引用 title.insert() 时存在以下错误,我只是无法根据文档找出我在这里缺少的内容:

方法调用中参数“dml”没有值

from ao3 import AO3
api = AO3()
work = api.work(id='1234')

from sqlalchemy import create_engine
engine = create_engine('sqlite:///ficrec.db', echo=True)

from sqlalchemy import Table, Column, Integer, String, MetaData
metadata = MetaData()

title = Table('title', metadata,
    Column('id', Integer, primary_key=True),
    Column('title', String(256))
)
author = Table('author', metadata,
    Column('id', Integer, primary_key=True),
    Column('author', String(128))
)
ins = title.insert().values(id=work.id, title=work.title)

【问题讨论】:

  • 请包括整个错误消息,包括回溯。您的代码中没有任何名为 dml 的内容。
  • 所以,就是这样。这就是全部信息。我应该提到它是 pylint 说这是一个问题,但如果我运行调试一切似乎都很好。没有追溯,什么都没有。然而,就像你说的那样,我的代码中没有任何东西叫做 dml 。所以我很困惑。我的 linter 混乱了吗?还是我错过了一些重要的事情。
  • pylint 有点受限,有时会抛出虚假错误。如果您的代码有效,那就不用担心了。我发现 linter 对于样式问题比检测实际错误更有用。

标签: python sqlalchemy visual-studio-code


【解决方案1】:

我遇到了同样的问题。基本上, insert() 需要一个参数是dml。 由于没有提供,pylint 会报如下错误。

[pylint] No value for argument 'dml' in method call [E1120]

不提供 dml 看起来没有功能问题。 简单查看源码,dml是decorator生成的

@util.dependencies("sqlalchemy.sql.dml")
def insert(self, dml, values=None, inline=False, **kwargs):
    """Generate an :func:`.insert` construct against this
    :class:`.TableClause`.

    E.g.::

        table.insert().values(name='foo')

    See :func:`.insert` for argument and usage information.

    """

    return dml.Insert(self, values=values, inline=inline, **kwargs)

为了继续前进,就我而言,我现在将 None 值传递给 insert()。 我不确定这是否是个好主意。 希望 SQLAlchmey 社区能解决这个问题。

对你来说,试试这种方式。

ins = title.insert(None).values(id=work.id, title=work.title)

【讨论】:

  • 这可以让 pylint 安静下来,而且它似乎并没有给我带来任何新的错误。仅供参考,这里的 sqlalchemy github 上有一个未解决的问题:github.com/sqlalchemy/sqlalchemy/issues/4656
  • @brendan 感谢您分享未解决的问题链接。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-07-11
  • 2020-12-16
  • 1970-01-01
  • 2018-05-16
  • 2014-02-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多