Pymongo 데이터베이스 선택 및 생성
Pymongo 데이터베이스 선택 및 생성
MongoDB는 NoSQL 데이터베이스로 유연한 스키마를 제공하며, 대규모 데이터를 처리하는 데 적합한 비관계형 데이터베이스입니다. MongoDB와 Python을 연동하기 위해 pymongo
라이브러리를 사용하면, 간편하게 데이터베이스에 접근할 수 있습니다. 이번 블로그에서는 pymongo
를 이용해 MongoDB 데이터베이스를 선택하고, 필요한 경우 자동으로 생성하는 방법에 대해 다뤄보겠습니다.
1. pymongo
설치
MongoDB와 Python을 연동하기 위해 pymongo
라이브러리를 설치해야 합니다. 설치는 아래 명령어를 사용하면 됩니다:
pip install pymongo
2. MongoDB 연결 설정
MongoDB에 연결하려면 MongoClient
클래스를 사용합니다. MongoClient
는 MongoDB 서버와 Python 애플리케이션 사이의 연결을 관리하는 역할을 합니다. 로컬 MongoDB 서버와 연결하는 방법과, 클라우드 기반의 MongoDB Atlas 서버와 연결하는 방법을 살펴보겠습니다.
2.1. 로컬 MongoDB 서버에 연결
로컬에 MongoDB 서버가 설치되어 있다면, 기본적으로 mongodb://localhost:27017/
주소로 연결할 수 있습니다.
from pymongo import MongoClient
# 로컬 MongoDB 서버 연결
= MongoClient("mongodb://localhost:27017/") client
2.2. MongoDB Atlas에 연결
MongoDB Atlas는 클라우드 기반의 MongoDB 서비스로, 다음과 같이 연결 문자열을 설정하여 사용할 수 있습니다:
from pymongo import MongoClient
# MongoDB Atlas 연결
= MongoClient("mongodb+srv://<username>:<password>@cluster0.mongodb.net/mydatabase?retryWrites=true&w=majority") client
주의: <username>
, <password>
, <dbname>
은 사용자의 MongoDB Atlas 계정에 맞게 수정해야 합니다.
3. 데이터베이스 선택 및 생성
MongoDB에서 데이터베이스는 사용자가 직접 생성하지 않고도, 첫 번째 데이터를 삽입하는 순간 자동으로 생성됩니다. pymongo
에서는 명시적으로 데이터베이스를 선택하는 코드를 작성하면, 해당 이름의 데이터베이스가 존재하지 않더라도 자동으로 생성됩니다.
3.1. 데이터베이스 선택
MongoDB에서 데이터베이스를 선택하는 방법은 매우 간단합니다. client
객체의 속성 또는 get_database()
메서드를 사용하여 데이터베이스에 접근할 수 있습니다.
# 'mydatabase'라는 이름의 데이터베이스 선택
= client.mydatabase db
이렇게 데이터베이스에 접근한 뒤 컬렉션을 생성하거나 데이터를 삽입할 수 있습니다. 만약 mydatabase
라는 데이터베이스가 존재하지 않으면, MongoDB는 처음 데이터를 삽입할 때 자동으로 데이터베이스를 생성합니다.
3.2. get_database()
메서드로 데이터베이스 선택
get_database()
메서드는 데이터베이스를 명시적으로 선택할 때 사용할 수 있으며, 선택한 데이터베이스가 없다면 마찬가지로 생성됩니다.
# 'mydatabase'라는 데이터베이스 선택 (메서드 사용)
= client.get_database("mydatabase") db
두 가지 방법 모두 동일하게 작동하며, 데이터베이스가 처음 데이터가 삽입될 때까지 실제로 생성되지는 않습니다.
4. 데이터베이스 내 컬렉션 선택 및 생성
MongoDB에서 컬렉션은 관계형 데이터베이스의 테이블과 유사합니다. 컬렉션도 명시적으로 생성할 필요가 없으며, 첫 데이터를 삽입하면 자동으로 생성됩니다.
# 'mycollection'이라는 컬렉션 선택
= db.mycollection
collection
# 모든 문서 삭제
collection.delete_many({})
# 첫 번째 문서 삽입
= {"name": "John", "age": 30}
data
collection.insert_one(data)
print("데이터베이스 및 컬렉션 자동 생성 완료!")
데이터베이스 및 컬렉션 자동 생성 완료!
- 이 코드를 실행하면
mydatabase
라는 데이터베이스가 생성되고, 그 안에mycollection
이라는 컬렉션이 만들어집니다. - 또한, 문서(Document)가 삽입되면서 실제로 데이터베이스와 컬렉션이 MongoDB에 저장됩니다.
5. 데이터베이스 목록 확인하기
MongoDB에서 현재 존재하는 데이터베이스 목록을 확인하려면 list_database_names()
메서드를 사용합니다. 데이터를 삽입한 후, 해당 데이터베이스가 목록에 나타나는지 확인할 수 있습니다.
# MongoDB에 있는 모든 데이터베이스 이름 확인
= client.list_database_names()
databases print("현재 존재하는 데이터베이스 목록:", databases)
# 컬렉션의 모든 문서 확인
= collection.find()
documents
# 문서 출력
for doc in documents:
print(doc)
현재 존재하는 데이터베이스 목록: ['mydatabase', 'admin', 'local']
{'_id': ObjectId('66f6d7d701f6228cb2a2283b'), 'name': 'John', 'age': 30}
6. 데이터베이스 삭제하기
특정 데이터베이스를 삭제하려면 drop_database()
메서드를 사용합니다. 이 메서드는 지정한 데이터베이스와 그 안의 모든 데이터를 삭제합니다.
# 'mydatabase' 데이터베이스 삭제
'mydatabase')
client.drop_database(print("데이터베이스 삭제 완료!")
데이터베이스 삭제 완료!
7. 데이터베이스 선택 시 주의사항
- 데이터베이스 이름은 대소문자를 구분합니다.
- 데이터베이스 이름에는 `
,
$,
\0` 등의 특수 문자를 포함할 수 없습니다. - 한 번 데이터베이스를 선택하면, 첫 문서 삽입 시 실제로 데이터베이스가 생성되므로, 사용하지 않을 데이터베이스는 만들지 않는 것이 좋습니다.
결론
pymongo
를 이용해 MongoDB 데이터베이스를 선택하고 생성하는 과정은 매우 직관적입니다. 데이터베이스와 컬렉션은 첫 번째 데이터 삽입 시 자동으로 생성되며, 따로 생성 명령을 사용할 필요가 없습니다. 이 유연함 덕분에 MongoDB는 스키마가 유연한 애플리케이션에서 자주 사용됩니다.