패키지 관리자 conda가 있는 venv의 Python 대화형 노트북(= Jupyter Notebook, iPython)에서 VSCode로 postgreSQL SQL 표현식을 테스트하는 방법은 무엇입니까?

패키지 관리자 conda가 있는 venv의 Python 대화형 노트북(= Jupyter Notebook, iPython)에서 VSCode로 postgreSQL SQL 표현식을 테스트하는 방법은 무엇입니까?

패키지 관리자 conda가 있는 venv의 Python 대화형 노트북(= Jupyter Notebook, iPython)에서 VSCode로 postgreSQL SQL 표현식을 테스트하는 방법은 무엇입니까?

답변1

흩어져 있는 가이드와 힌트를 사용하여 설정하는 데 너무 오랜 시간이 걸렸기 때문에 이것을 공유합니다.


  • 원하는 콘다 환경으로 변경하세요. 예를 들어 가상 환경을 다음과 같이 만듭니다.venv310(전체 답변에서 동일한 이름) conda create -n venv310 python=3.10다음을 사용하여 활성화하십시오 conda activate venv310.

venv310을 활성화한 터미널에서 VSCode를 열면 VSCode는 코드를 실행하자마자 기본 환경으로 돌아갑니다.Shift+Enter:

(base) … $ /bin/python3
Python 3.10.6 (main, Nov 14 2022, 16:10:14) [GCC 11.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from sqlalchemy import create_engine

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'sqlalchemy'
  • 가지지 않고venv310여기 작업에서는 실수로 가져온 기본 환경에 sqlalchemy 모듈이 필요하다는 것이 이 오류를 통해 이미 분명해졌습니다.venv310:
conda install sqlalchemy
  • 그리고 나중에 발생한 오류에서 "psycopg2" 방언도 설치해야 한다는 사실이 밝혀졌습니다.
    raise exc.NoSuchModuleError(
sqlalchemy.exc.NoSuchModuleError: Can't load plugin: sqlalchemy.dialects:postgres.psycopg2
conda install psycopg2
  • 대신 '%load_ext sql'과 같은 마법을 실행하면 다음과 같은 내용이 표시됩니다.
>>> %load_ext sql
  File "<stdin>", line 1
    %load_ext sql
    ^
SyntaxError: invalid syntax
  • 어쨌든 가장 큰 문제는 가상 환경이 작동하지 않는다는 것입니다. 따라서 VSCode/VSCodium 확장 "VSCode용 Python"을 설치하세요. 보다VsCode에서 Anaconda 환경 활성화.
  • VSCode를 다시 시작하세요.
  • 딸깍 하는 소리당신이 이것을 본다면 :

여기에 이미지 설명을 입력하세요

귀하가 conda 환경을 사용하고 있는 것으로 확인되었습니다. 통합 터미널에서 이 환경에 문제가 발생하는 경우 Python 확장이 사용자 설정에서 "terminal.integrated.inheritEnv"를 false로 변경하도록 하는 것이 좋습니다.

출처: Python(확장) 예 아니요 추가 정보

  • 누르다Ctrl+Shift+P→ "파이썬: 인터프리터 선택" → 선택venv310(이것은 이전에 이미 할 수 있었던 일이지만 지금은 일부 코드를 실행할 때 기본 환경으로 돌아가지 않았습니다.) 보다VsCode에서 Anaconda 환경 활성화.

  • 다음을 사용하여 대화형 창을 엽니다.Ctrl+Shift+P→ "Jupyter: 대화형 창 만들기"

여기에 이미지 설명을 입력하세요

%load_ext sql일반 Python 코드 편집기에 있는 줄을 마우스 오른쪽 버튼으로 클릭하여 대화형 창을 시작했습니다 . 아니면 누르세요Shift+Enter그 줄에.

보다Visual Studio Code에서 Python 대화형 모드를 어떻게 찾거나 실행하나요? - 스택 오버플로.

그러면 다음이 표시됩니다.

여기에 이미지 설명을 입력하세요

'Python 3.10.6 ('venv310')'으로 셀을 실행하려면 ipykernel 패키지가 필요합니다.

딸깍 하는 소리설치하다.

  • 확실하진 않지만 클릭한 것 같아요설치하다, 여전히 iPython 기록에 표시됩니다.

여기에 이미지 설명을 입력하세요

'Python 3.10.6 ('venv310')'으로 셀을 실행하려면 ipykernel 패키지가 필요합니다.
다음 명령을 실행하여 Python 환경에 'ipykernel'을 설치합니다.
명령: 'conda install -n venv310 ipykernel --update-deps --force-reinstall'

# %% Python 3.10.8 (기본, 2022년 11월 24일, 14:13:03) [GCC 11.2.0]
자세한 내용을 보려면 '저작권', '크레딧' 또는 '라이선스'를 입력하세요.
IPython 8.7.0 -- 향상된 대화형 파이썬. 유형 '?' 도와주기 위해.

따라서 이 내용도 보이면 conda install -n venv310 ipykernel --update-deps --force-reinstall다음에서 실행하세요.venv310.

  • %load_ext sql터미널에 입력하거나 Python 편집기에서 매직을 실행하여 iPython 터미널에서 실행합니다 (대화형 창에서 실행하는 방법을 보려면 마우스 오른쪽 버튼을 클릭하세요).

여기에 이미지 설명을 입력하세요

여기에 이미지 설명을 입력하세요

네가 본다면:

여기에 이미지 설명을 입력하세요

Output exceeds the size limit. Open the full output data in a text editor
---------------------------------------------------------------------------
ModuleNotFoundError                     Traceback (most recent call last)
Cell In[2], line 1
----> 1 get_ipython().run_line_magic('load_ext', 'sql')

File ~/anaconda3/envs/venv310/lib/python3.10/site-packages/IPython/core/interactiveshell.py:2364, in InteractiveShell.run_line_magic(self, magic_name, line, _stack_depth)
   2362     kwargs['local_ns'] = self.get_local_scope(stack_depth)
   2363 with self.builtin_trap:
-> 2364     result = fn(*args, **kwargs)
   2365 return result

File ~/anaconda3/envs/venv310/lib/python3.10/site-packages/IPython/core/magics/extension.py:33, in ExtensionMagics.load_ext(self, module_str)
    31 if not module_str:
    32  raise UsageError('Missing module name.')
---> 33 res = self.shell.extension_manager.load_extension(module_str)
    35 if res == 'already loaded':
    36  print("The %s extension is already loaded. To reload it, use:" % module_str)

File ~/anaconda3/envs/venv310/lib/python3.10/site-packages/IPython/core/extensions.py:76, in ExtensionManager.load_extension(self, module_str)
    69 """Load an IPython extension by its module name.
    70
    71 Returns the string "already loaded" if the extension is already loaded,
    72 "no load function" if the module doesn't have a load_ipython_extension
    73 function, or None if it succeeded.
    74 """
...
File <frozen importlib._bootstrap>:1027, in _find_and_load(name, import_)

File <frozen importlib._bootstrap>:1004, in _find_and_load_unlocked(name, import_)

ModuleNotFoundError: No module named 'sql'

또는 다음 매직을 실행하고 다음 중 하나를 확인하는 경우:

# %%
%sql postgresql+psycopg2://localhost/&server=postgres?user=postgres&port=5432&password=postgres&database=test_db
UsageError: Line magic function `%sql` not found.

# %%
%%sql select * FROM x;
UsageError: Cell magic `%%sql` not found.

# %%
result = %sql select * FROM x;
UsageError: Line magic function `%sql` not found.

그런 다음 실행해야합니다venv310:

conda install -c conda-forge ipython-sql

(그리고 pip 설치 프로그램이 아닙니다 pipenv install ipython-sql.ipython-sql 가이드)

보다UsageError:라인 매직 기능을 %sql찾을 수 없습니다.

  • VSCode로 돌아가서 다음을 볼 수 있습니다.

여기에 이미지 설명을 입력하세요

그러나 그것은 해를 끼치 지 않습니다.

  • 다시 뛰어:
%load_ext sql

여기에 이미지 설명을 입력하세요

  • 그런 다음: %sql postgresql+psycopg2://localhost/&server=postgres?user=postgres&port=5432&password=postgres&database=test_db

여기에 이미지 설명을 입력하세요

(보다:PostgreSQL 연결 문자열/URL의 형식은 무엇입니까? - 스택 오버플로)

  • 이제 iPython 콘솔에서 SQL 출력을 볼 수 있습니다.
%sql select * FROM x;

여기에 이미지 설명을 입력하세요

나중에 출력으로. 표시 제한에 대해서는 다음을 참조하세요.ipython-sql 가이드--> "구성".

관련 정보