본문 바로가기
파이썬

파이썬 SQLAlchemy를 사용하여 새 데이터베이스를 만드는 방법은 무엇입니까?

by º기록 2020. 9. 29.
반응형

SQLAlchemy를 사용하여 Engine 개체는 다음과 같이 생성됩니다.

from sqlalchemy import create_engine
engine = create_engine("postgresql://localhost/mydb")

create_engine 의 인수에 지정된 데이터베이스 (이 경우 mydb )가 존재하지 않으면 engine 액세스가 실패합니다. 지정된 데이터베이스가없는 경우 SQLAlchemy에 새 데이터베이스를 만들도록 지시 할 수 있습니까?

 

해결 방법

 

postgres에서는 일반적으로 세 개의 데이터베이스가 기본적으로 존재합니다. 수퍼 유저 (예 : postgres 역할)로 연결할 수있는 경우 postgres 또는 template1 데이터베이스에 연결할 수 있습니다. 기본 pg_hba.conf는 postgres 라는 이름의 유닉스 사용자 만 postgres 역할을 사용하도록 허용하므로 가장 간단한 방법은 해당 사용자가되는 것입니다. 어쨌든 데이터베이스를 만들 권한이있는 사용자로 평소와 같이 엔진을 만듭니다.

>>> engine = sqlalchemy.create_engine("postgres://postgres@/postgres")

engine.execute () 는 사용할 수 없습니다. postgres는 트랜잭션 내부에 데이터베이스를 만들 수 없으며 sqlalchemy는 항상 트랜잭션에서 쿼리를 실행하려고하기 때문입니다. 이 문제를 해결하려면 엔진에서 기본 연결을 가져옵니다.

>>> conn = engine.connect()

그러나 연결은 여전히 ​​트랜잭션 내부에 있으므로 커밋 으로 열린 트랜잭션을 종료해야합니다.

>>> conn.execute("commit")

그런 다음 적절한 PostgreSQL 명령을 사용하여 데이터베이스를 생성 할 수 있습니다.

>>> conn.execute("create database test")
>>> conn.close()

 

참조 페이지 https://stackoverflow.com/questions/6506578

 

 

반응형

댓글