首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mypy和sqlalchemy:错误:没有定义名称sqlalchemy

mypy和sqlalchemy:错误:没有定义名称sqlalchemy
EN

Stack Overflow用户
提问于 2019-01-31 10:09:41
回答 2查看 2.1K关注 0票数 0

我的职能如下:

代码语言:javascript
复制
def _init_db() -> "sqlalchemy.orm.session.Session":
    engine = create_engine("sqlite:///my_db.db")
    Base.metadata.create_all(engine)

    # Creating Session
    from sqlalchemy.orm import sessionmaker
    Session = sessionmaker(bind = engine)
    session = Session()
    return session

在代码上运行mypy会导致以下错误

错误:名称“sqlalchemy”未定义

我试着用和不带sqlalchemy.orm.session.Session的引号

如何为sqlalchemy类添加类型提示?我遗漏了什么?

EN

回答 2

Stack Overflow用户

发布于 2019-01-31 11:08:04

为了使用类型提示,您可以导入要返回的内容。在第一个示例中,我试图定义一个函数,在不导入sqlite3的情况下返回一些sqlite3内容。在导入这个模块之后,一切都很好。

代码语言:javascript
复制
In [1]: def init_db() -> sqlite3.Connection:
   ...:     return sqlite3.connection
   ...:
   ...:
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-1-b64a7629272c> in <module>()
----> 1 def init_db() -> sqlite3.Connection:
      2     return sqlite3.connection

NameError: name 'sqlite3' is not defined

In [2]: import sqlite3

In [3]: def init_db() -> sqlite3.Connection:
   ...:     return sqlite3.connection
   ...:
   ...:

In [4]:
票数 1
EN

Stack Overflow用户

发布于 2019-01-31 11:20:05

多亏了冈佐尔的回答。

我需要补充一下

from sqlalchemy.orm.session import Session

在开始,然后做

代码语言:javascript
复制
def _init_db() -> "Session":
    engine = create_engine("sqlite:///my_db.db")
    Base.metadata.create_all(engine)

    # Creating Session
    from sqlalchemy.orm import sessionmaker
    Session = sessionmaker(bind = engine)
    session = Session()
    return session
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54458110

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档