AttributeError:模块“sqlalchemy.dialects”没有属性“postgresql”

问题描述 投票:0回答:2

我正在创建一个非常基本的 python 程序,将其与 psql 中的数据库连接。

我的代码如下:


从 sqlalchemy 导入 create_engine

从 sqlalchemy.orm 导入scoped_session,sessionmaker

engine=create_engine("postgresql+psycopg2://sidrules:password@localhost:5432/first")

db=scoped_session(sessionmaker(bind=engine))

def main():

 flights=db.execute("select origin, destination, duration from flights").fetchall()

      for flight in flights:

           print(f"from {flight.origin} to {flight.destination} in {flight.duration} min")

if name == "main":

main()

运行上面的代码时,我收到以下错误(抱歉格式奇怪):


*回溯(最近一次调用最后一次): 文件“select.py”,第 6 行,位于 引擎=create_engine("postgres+psycopg2://sidrules:secret@localhost:5432/first") 文件“C:\Users\Home\AppData\Local\Programs\Python\Python38-32\lib\site-packages\sqlalchemy ngine__init__.py”,第 479 行,位于 创建引擎 返回策略.create(*args, **kwargs) 文件“C:\Users\Home\AppData\Local\Programs\Python\Python38-32\lib\site-packages\sqlalchemy ngine\strategies.py”,第 61 行,在创建中 入口点 = u._get_entrypoint() 文件“C:\ Users \ Home \ AppData \ Local \ Programs \ Python \ Python38-32 \ lib \ site-packages \ sqlalchemy ngine \ url.py”,第172行,在_get_entrypoint中 cls = 注册表.load(名称) 文件“C:\Users\Home\AppData\Local\Programs\Python\Python38-32\lib\site-packages\sqlalchemy\util\langhelpers.py”,第 253 行,加载中 加载器 = self.auto_fn(名称) 文件“C:\Users\Home\AppData\Local\Programs\Python\Python38-32\lib\site-packages\sqlalchemy\dialects__init__.py”,第 45 行,在 _auto_fn 中 module = import("sqlalchemy.dialects.%s" % (dialect,)).dialects 文件“C:\ Users \ Home \ AppData \ Local \ Programs \ Python \ Python38-32 \ lib \ site-packages \ sqlalchemy \ dialects \ postgresql__init__.py”, 8号线,在 从 。进口基地 文件“C:\ Users \ Home \ AppData \ Local \ Programs \ Python \ Python38-32 \ lib \ site-packages \ sqlalchemy \ dialects \ postgresql ase.py”,第954行,位于 from uuid import UUID as _python_UUID # noqa 文件“C:\Users\Home\AppData\Local\Programs\Python\Python38-32\lib\uuid.py”,第 57 行,位于 _AIX = platform.system() == 'AIX' 文件“C:\Users\Home\AppData\Local\Programs\Python\Python38-32\lib\platform.py”,第 891 行,在系统中 返回 uname().system 文件“C:\Users\Home\AppData\Local\Programs\Python\Python38-32\lib\platform.py”,第 779 行,在 uname 中 节点 = _node() 文件“C:\ Users \ Home \ AppData \ Local \ Programs \ Python \ Python38-32 \ lib \ platform.py”,第582行,在_node中 进口插座 文件“C:\Users\Home\AppData\Local\Programs\Python\Python38-32\lib\socket.py”,第 52 行,位于 导入 os、sys、io、选择器 文件“C:\Users\Home\AppData\Local\Programs\Python\Python38-32\lib\selectors.py”,第 12 行,位于 导入选择 文件“D:\HTML\SQL\select.py”,第 6 行,位于 引擎=create_engine("postgres+psycopg2://sidrules:sidhhant@localhost:5432/first") 文件“C:\Users\Home\AppData\Local\Programs\Python\Python38-32\lib\site-packages\sqlalchemy ngine__init__.py”,第 479 行,位于 创建引擎 返回策略.create(*args, **kwargs) 文件“C:\Users\Home\AppData\Local\Programs\Python\Python38-32\lib\site-packages\sqlalchemy ngine\strategies.py”,第 61 行,在创建中 入口点 = u._get_entrypoint() 文件“C:\ Users \ Home \ AppData \ Local \ Programs \ Python \ Python38-32 \ lib \ site-packages \ sqlalchemy ngine \ url.py”,第172行,在_get_entrypoint中 cls = 注册表.load(名称) 文件“C:\Users\Home\AppData\Local\Programs\Python\Python38-32\lib\site-packages\sqlalchemy\util\langhelpers.py”,第 253 行,加载中 加载器 = self.auto_fn(名称) 文件“C:\Users\Home\AppData\Local\Programs\Python\Python38-32\lib\site-packages\sqlalchemy\dialects__init__.py”,第 49 行,在 _auto_fn

模块 = getattr(模块,方言)

AttributeError:模块“sqlalchemy.dialects”没有属性“postgresql”*


我认为最后一行必须担心:


AttributeError:模块“sqlalchemy.dialects”没有属性“postgresql”


谢谢您的帮助。

抱歉,格式很奇怪,这是我的第一个问题。

python python-3.x postgresql sqlalchemy
2个回答
2
投票

谢谢所有看到并思考过我的问题的人。

我遇到的唯一问题是我的文件名是“select.py”。 我不知道怎么做,但重命名文件对我来说很有效。


0
投票

名称

select.py
隐藏了标准库中的 select 模块。标准库模块应在 SQLAlchemy 初始化时导入

文件“C:\Users\Home\AppData\Local\Programs\Python\Python38-32\lib\selectors.py”,第 12 行,导入选择

但是我们得到了循环导入。

© www.soinside.com 2019 - 2024. All rights reserved.