Я создавал очень простую программу на 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'
Спасибо за помощь.
Извините за странный формат, это мой первый вопрос.
postgres+psycopg2
->postgresql+psycopg2
Это дает точно такую же ошибку. На самом деле раньше я использовал его и изменил после ошибки.
Хотя последняя форма правильная.
Хорошо, я редактирую свой вопрос соответственно. Спасибо.