Подключение postgresql к sqlalchemy

avatar
Jack_of_All_Trades
19 февраля 2012 в 22:17
128512
3
69

Я знаю, что это действительно простой вопрос, но я не знаю решения. Что здесь происходит, когда я пытаюсь подключиться к postgresql? Я самоучка в этой области базы данных и программирования, поэтому, пожалуйста, будьте осторожны со мной. Когда я пытаюсь выполнить следующий код:

import sqlalchemy
db = sqlalchemy.create_engine('postgresql:///tutorial.db')

Я получаю эту ошибку:

Отслеживание (последний вызов последний): Файл "", строка 1, в db = sqlalchemy.create_engine ('postgresql: ///tutorial.db') Файл "C: \ Python27 \ lib \ site-packages \ sqlalchemy-0.7.5dev-py2.7.egg \ sqlalchemy \ engine__init __. Py", строка 327, в create_engine return strategy.create (* args, ** kwargs) Файл "C: \ Python27 \ lib \ site-packages \ sqlalchemy-0.7.5dev-py2.7.egg \ sqlalchemy \ engine \ strategy.py", строка 64, в create dbapi = dialect_cls.dbapi (** dbapi_args) Файл "C: \ Python27 \ lib \ site-packages \ sqlalchemy-0.7.5dev-py2.7.egg \ sqlalchemy \ dialects \ postgresql \ psycopg2.py", строка 289, в dbapi psycopg = импорт ('psycopg2') ImportError: нет модуля с именем psycopg2

Нужно ли мне устанавливать psycopg2 отдельно? Какая строка подключения для postgresql правильная?

Источник

Ответы (3)

avatar
Uku Loskit
19 февраля 2012 в 22:19
58

Да, psycopg2 - это в основном драйверы Python для PostgreSQL, которые необходимо устанавливать отдельно.

Список допустимых строк подключения можно найти здесь, у вас немного нет (вам нужно имя пользователя, пароль и имя хоста, как указано в ссылке ниже):

http://docs.sqlalchemy.org/en/latest/core/engines.html#postgresql

swade
16 мая 2018 в 19:18
1

Честно говоря, я сбит с толку, что это не зависимость от SQLAlchemy. Если вы собираетесь объединить функциональность другого пакета с вашим, вы должны поддерживать его и не требовать отдельной установки.

jjmontes
2 января 2019 в 12:08
12

@StevenWade не совсем, вы обычно не хотите устанавливать зависимости для всех систем баз данных, когда вы собираетесь использовать, возможно, только одну. Вот почему зависимости в пакетах такого типа не являются обязательными и не применяются.

avatar
George Joubran Abu Dauod
2 января 2018 в 11:36
1

Да, вам нужно установить psycopg2 отдельно, если вы используете Linux, вы можете просто ввести следующую строку в терминал: $pip install psycopg2, если это не сработает, попробуйте использовать sudo: $sudo pip install psycopg2

avatar
andrew
3 марта 2017 в 19:33
76

Вам потребуется pip install SQLAlchemy и pip install psycopg2. Пример строки подключения SQLAlchemy, в которой используется psycopg2:

from sqlalchemy import create_engine
engine = create_engine('postgresql+psycopg2://user:password@hostname/database_name')

Вы также можете подключиться к своей базе данных, используя исключительно драйвер psycopg2:

import psycopg2
conn_string = "host='localhost' dbname='my_database' user='postgres' password='secret'"
conn = psycopg2.connect(conn_string)

Однако использование драйвера psycopg2 для подключения не использует преимущества SQLAlchemy.

Tony Chou
6 ноября 2020 в 13:52
3

У меня есть еще один вопрос о postgresql+psycopg2://user:password@..., почему в некоторых статьях говорится, что используется только postgresql://user:password@..., в чем разница?

Albin
19 февраля 2021 в 11:18
0

Согласно этому комментарию это то же самое: coderhelper.com/a/47946916/7775043

AlexK
20 марта 2021 в 06:00
2

@TonyChou см. docs.sqlalchemy.org/en/14/core/engines.html: «Диалект PostgreSQL использует psycopg2 в качестве DBAPI по умолчанию», поэтому нет никакой разницы. «DBAPI - это« низкоуровневый »API, который обычно является системой самого низкого уровня, используемой в приложении Python для взаимодействия с базой данных».