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
'파이썬' 카테고리의 다른 글
파이썬 Ubuntu에 lxml을 설치하는 방법 (0) | 2020.09.29 |
---|---|
파이썬 사전 키가 목록에서 일치합니다. 키 / 값 쌍 가져 오기 (0) | 2020.09.29 |
파이썬 Python에서 float 목록을 공백으로 구분 된 문자열에 결합 (0) | 2020.09.29 |
파이썬 두 점 사이에 선분을 어떻게 생성합니까? (0) | 2020.09.28 |
파이썬 Python과 JavaScript를 통합하는 가장 좋은 방법은 무엇입니까? (0) | 2020.09.28 |
댓글