AttributeError:“NoneType”对象没有属性“_instantiate_plugins”(无法导入 create_engine)
Posted
技术标签:
【中文标题】AttributeError:“NoneType”对象没有属性“_instantiate_plugins”(无法导入 create_engine)【英文标题】:AttributeError: 'NoneType' object has no attribute '_instantiate_plugins' (Cannot import create_engine) 【发布时间】:2020-07-28 23:18:55 【问题描述】:import os
from sqlalchemy import create_engine
from sqlalchemy.orm import scoped_session, sessionmaker
engine=create_engine(os.getenv("DATABASE_URL"))
db = scoped_session(sessionmaker(bind=engine))
def main():
flights = db.execute("SELECT origin, destination, duration FROM flights").fetchall()
for flight in flights:
print(f"flight.origin to flight.destination, flight.duration minutes.")
if __name__ == "__main__":
main()
Traceback(最近一次调用最后一次): 文件“list.py”,第 6 行,在 engine=create_engine(os.getenv("DATABASE_URL")) 文件“C:\Users\Aakash\AppData\Local\Programs\Python\Python38-32\lib\site-packages\sqlalchemy\engine__init__.py”, 第 479 行,在 create_engine 返回 strategy.create(*args, **kwargs) 创建文件“C:\Users\Aakash\AppData\Local\Programs\Python\Python38-32\lib\site-packages\sqlalchemy\engine\strategies.py”,第 56 行 插件 = u._instantiate_plugins(kwargs) AttributeError: 'NoneType' 对象没有属性 '_instantiate_plugins'
如果将我的代码更改为:
The Problem and the traceback is in the picture.
【问题讨论】:
【参考方案1】:只需将其用作网址
“postgresql://用户名:密码@主机:端口/数据库”
直接在您的create_engine("postgresql://username:password@host:port/database")
中传递这些值
我遇到了同样的问题,现在它消失了。这对我有用。唯一需要提及的是,在创建新用户和数据库并移动表之后,我完全遇到了一个不同的错误。错误是'
'' ModuleNotFoundError: No module named 'psycopg2' '''
并且解决方案正在运行:pip3 install psycopg2-binary
PS:网址详情附上你的详细资料。
【讨论】:
【参考方案2】:看起来os.getenv("DATABASE_URL")
正在返回None
。调用create_engine(None)
会给你这个错误。 DATABASE_URL
是否在您的环境变量中定义?
【讨论】:
【参考方案3】:而不是
engine=create_engine(os.getenv("DATABASE_URL"))
db = scoped_session(sessionmaker(bind=engine))
用你的网址输入这个:
engine = create_engine("postgresql://scott:tiger@localhost/mydatabase")
db = scoped_session(sessionmaker(bind=engine))
【讨论】:
【参考方案4】:为避免在您的代码中输入您的 postgresql 连接(包括密码),请根据以下方式在您的终端中定义您的环境变量:
source ~/.bash_profile
或者你可以使用命令的简写形式:
. ~/.bash_profile
这会在当前 shell 中执行 .bash_profile 文件。
有关重新加载 .bash_profile 的其他建议可以在 cmets here 中找到。
【讨论】:
以上是关于AttributeError:“NoneType”对象没有属性“_instantiate_plugins”(无法导入 create_engine)的主要内容,如果未能解决你的问题,请参考以下文章
AttributeError:'NoneType'对象没有属性'upper'[关闭]
%Matplotlib - AttributeError: 'NoneType' 对象没有属性 'lower'
BeautifulSoup:AttributeError:“NoneType”对象没有属性“文本”
Elastic Beanstalk 部署错误:AttributeError :: 'NoneType' 对象没有属性 'split'