psycopg2 OperationalError в интерактивном блокноте python / jupyter

Я пытаюсь извлечь данные в кадр данных pandas из базы данных pgadmin, используя psycopg2. Мой файл .py нормально работает в терминале, но когда я запускаю его в интерактивных (против кода) python или блокнотах jupyter, я получаю следующую ошибку.

Код:

with psycopg2.connect(conn_string) as conn:
    sql = "SELECT * FROM table"
    df = pd.read_sql_query(sql, conn)

Ошибка:

OperationalError                          
---> 19 with psycopg2.connect(conn_string) as conn:
     20     sql = "SELECT * FROM table"
     21     df = pd.read_sql_query(sql, conn)

//anaconda3/lib/python3.7/site-packages/psycopg2/__init__.py in connect(dsn, connection_factory, cursor_factory, **kwargs)
    124 
    125     dsn = _ext.make_dsn(dsn, **kwargs)
--> 126     conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
    127     if cursor_factory is not None:
    128         conn.cursor_factory = cursor_factory

OperationalError: server closed the connection unexpectedly
    This probably means the server terminated abnormally
    before or while processing the request.

Кто-нибудь знает, почему это может быть так? Когда я открываю интерактивный Python в коде vs, я также вижу эту ошибку:

Jupyter kernel cannot be started from 'Python 3.7.4 64-bit'. 
Using closest match Python 3.7.3 64-bit ('anaconda3': conda) instead.
Error starting original kernel: Error: Module 'notebook' not installed.

person Ethan    schedule 14.10.2019    source источник


Ответы (1)


Я разработчик этого расширения, и я могу решить здесь то, что, по моему мнению, является проблемой. В настоящее время в VSCode мы запускаем локальный сервер Jupyter, используя интерпретатор Python, который вы выбрали в левом нижнем углу VSCode. Мне кажется, что у вас выбран интерпретатор Python 3.7.4, и в этом интерпретаторе не установлены ноутбуки Juypter. Итак, наш код затем возвращается, чтобы найти другой интерпретатор/среду, в которой есть jupyter (в данном случае 3.7.3). Если 3.7.3 Anaconda не имеет полной среды, которую вам нужно запустить, возможно, именно поэтому вы видите здесь ошибки. Если эта среда 3.7.4 является той, в которой вы хотите запустить интерактивное окно, сначала убедитесь, что вы можете запускать блокноты jupyter из командной строки в этой среде.

person Ian Huff    schedule 15.10.2019
comment
Я могу запускать блокноты jupyter из командной строки, как я могу убедиться, что блокноты jupyter установлены в python 3.7.4? - person Ethan; 16.10.2019
comment
Поэтому, когда вы запускаете из командной строки, вы должны каким-то образом подобрать конкретную версию Python. Судя по приведенным выше результатам, в вашей системе должны быть установлены как 3.7.4, так и 3.7.3. Но со своей стороны я не могу точно сказать, что вы используете для этих сред. Большинство людей используют что-то вроде virtualenvs или conda envs для управления этим. Вам просто нужно получить командную строку с этим 3.7.4 и установить в него jupyter. - person Ian Huff; 17.10.2019