AttributeError: модуль «sqlalchemy.dialects» не имеет атрибута «postgresql»

avatar
Siddhant Gupta
19 апреля 2020 в 12:33
1787
1
2

Я создавал очень простую программу на Python, соединяющую ее с базой данных в psql.

Мой код выглядит следующим образом:


из sqlalchemy import create_engine

из sqlalchemy.orm import scoped_session, sessionmaker

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

db=scoped_session(sessionmaker(bind=engine))

деф 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()

при выполнении приведенного выше кода я получаю следующую ошибку (извините за странное форматирование):


*Traceback (последний последний вызов): Файл "select.py", строка 6, в engine=create_engine("postgres+psycopg2://sidrules:secret@localhost:5432/first") Файл "C:\Users\Home\AppData\Local\Programs\Python\Python38-32\lib\site-packages\sqlalchemy\engine__init__.py", строка 479, в create_engine return Strategy.create(*args, **kwargs) Файл "C:\Users\Home\AppData\Local\Programs\Python\Python38-32\lib\site-packages\sqlalchemy\engine\strategies.py", строка 61, при создании точка входа = u._get_entrypoint() Файл "C:\Users\Home\AppData\Local\Programs\Python\Python38-32\lib\site-packages\sqlalchemy\engine\url.py", строка 172, в _get_entrypoint cls = реестр. загрузка (имя) Файл "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 модуль = импорт("sqlalchemy.dialects.%s" % (диалект,)).диалекты Файл "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\base.py", строка 954, в из uuid импортировать UUID как _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().система Файл "C:\Users\Home\AppData\Local\Programs\Python\Python38-32\lib\platform.py", строка 779, имя пользователя узел = _узел() Файл "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, в engine=create_engine("postgres+psycopg2://sidrules:sidhhant@localhost:5432/first") Файл "C:\Users\Home\AppData\Local\Programs\Python\Python38-32\lib\site-packages\sqlalchemy\engine__init__.py", строка 479, в create_engine return Strategy.create(*args, **kwargs) Файл "C:\Users\Home\AppData\Local\Programs\Python\Python38-32\lib\site-packages\sqlalchemy\engine\strategies.py", строка 61, при создании точка входа = u._get_entrypoint() Файл "C:\Users\Home\AppData\Local\Programs\Python\Python38-32\lib\site-packages\sqlalchemy\engine\url.py", строка 172, в _get_entrypoint cls = реестр. загрузка (имя) Файл "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

module = getattr(модуль, диалект)

AttributeError: модуль 'sqlalchemy.dialects' не имеет атрибута 'postgresql'*


о чем, я думаю, должна беспокоиться последняя строка:


AttributeError: модуль 'sqlalchemy.dialects' не имеет атрибута 'postgresql'


Спасибо за помощь.

Извините за странный формат, это мой первый вопрос.

Источник
Ilja Everilä
19 апреля 2020 в 12:44
1

postgres+psycopg2 -> postgresql+psycopg2

Siddhant Gupta
19 апреля 2020 в 12:52
0

Это дает точно такую ​​​​же ошибку. На самом деле раньше я использовал его и изменил после ошибки.

Ilja Everilä
19 апреля 2020 в 12:58
0

Хотя последняя форма правильная.

Siddhant Gupta
19 апреля 2020 в 13:01
0

Хорошо, я редактирую свой вопрос соответственно. Спасибо.

Ответы (1)

avatar
Siddhant Gupta
20 апреля 2020 в 09:48
2

Спасибо всем, кто увидел и подумал над моим вопросом.

Единственная проблема, с которой я столкнулся, это то, что имя моего файла было 'select.py'. Не знаю как, но мне помогло переименование файла.