Python 데이터 지속성-PyMongo 모듈
MongoDB는 문서 지향적입니다. NoSQL데이터 베이스. 서버 측 공개 라이센스에 따라 배포되는 크로스 플랫폼 데이터베이스입니다. 문서와 같은 JSON을 스키마로 사용합니다.
방대한 데이터를 저장할 수있는 기능을 제공하기 위해 둘 이상의 물리적 서버 (샤드라고 함)가 상호 연결되어 수평 적 확장 성이 달성됩니다. MongoDB 데이터베이스는 문서로 구성됩니다.
문서는 관계형 데이터베이스 테이블의 행과 유사합니다. 그러나 특정 스키마가 없습니다. 문서는 사전과 유사한 키-값 쌍의 모음입니다. 그러나 각 문서의 kv 쌍 수는 다를 수 있습니다. 관계형 데이터베이스의 테이블에 기본 키가있는 것처럼 MongoDB 데이터베이스의 문서에는 다음과 같은 특수 키가 있습니다."_id".
MongoDB 데이터베이스가 Python과 함께 사용되는 방식을보기 전에 MongoDB를 설치하고 시작하는 방법을 간략하게 이해하겠습니다. MongoDB의 커뮤니티 및 상용 버전을 사용할 수 있습니다. 커뮤니티 버전은 www.mongodb.com/download-center/community 에서 다운로드 할 수 있습니다 .
MongoDB가 c : \ mongodb에 설치되어 있다고 가정하면 다음 명령을 사용하여 서버를 호출 할 수 있습니다.
c:\mongodb\bin>mongod
MongoDB 서버는 기본적으로 포트 번호 22017에서 활성화됩니다. 데이터베이스는 기본적으로 data / bin 폴더에 저장되지만 –dbpath 옵션으로 위치를 변경할 수 있습니다.
MongoDB에는 MongoDB 셸에서 사용되는 자체 명령 집합이 있습니다. 쉘을 호출하려면 다음을 사용하십시오.Mongo 명령.
x:\mongodb\bin>mongo
MySQL 또는 SQLite 셸 프롬프트와 유사한 셸 프롬프트가 표시되며 그 전에 네이티브 NoSQL 명령을 실행할 수 있습니다. 그러나 MongoDB 데이터베이스를 Python에 연결하는 데 관심이 있습니다.
PyMongo모듈은 Python 프로그래밍 인터페이스를 제공하기 위해 MongoDB Inc에서 자체적으로 개발했습니다. 잘 알려진 pip 유틸리티를 사용하여 PyMongo를 설치하십시오.
pip3 install pymongo
MongoDB 서버가 실행 중이라고 가정합니다. mongod 명령) 포트 22017에서 수신 대기 중이면 먼저 다음을 선언해야합니다. MongoClient목적. Python 세션과 데이터베이스 간의 모든 트랜잭션을 제어합니다.
from pymongo import MongoClient
client=MongoClient()
이 클라이언트 개체를 사용하여 MongoDB 서버와의 연결을 설정합니다.
client = MongoClient('localhost', 27017)
다음 명령으로 새 데이터베이스가 생성됩니다.
db=client.newdb
MongoDB 데이터베이스는 관계형 데이터베이스의 테이블과 유사한 많은 컬렉션을 가질 수 있습니다. Collection 객체는Create_collection() 함수.
db.create_collection('students')
이제 다음과 같이 컬렉션에 하나 이상의 문서를 추가 할 수 있습니다.
from pymongo import MongoClient
client=MongoClient()
db=client.newdb
db.create_collection("students")
student=db['students']
studentlist=[{'studentID':1,'Name':'Juhi','age':20, 'marks'=100},
{'studentID':2,'Name':'dilip','age':20, 'marks'=110},
{'studentID':3,'Name':'jeevan','age':24, 'marks'=145}]
student.insert_many(studentlist)
client.close()
문서를 검색하려면 (SELECT 쿼리와 유사) 다음을 사용해야합니다. find()방법. 모든 문서를 얻을 수있는 도움으로 커서를 반환합니다.
students=db['students']
docs=students.find()
for doc in docs:
print (doc['Name'], doc['age'], doc['marks'] )
컬렉션에서 모든 문서 대신 특정 문서를 찾으려면 find () 메서드에 필터를 적용해야합니다. 필터는 논리 연산자를 사용합니다. MongoDB에는 아래와 같은 논리 연산자가 있습니다.
Sr. 아니요 | MongoDB 연산자 및 기존 논리 연산자 |
---|---|
1 | $eq 같음 (==) |
2 | $gt 보다 큼 (>) |
삼 | $gte 보다 크거나 같음 (> =) |
4 | $in 배열의 값과 같으면 |
5 | $lt 보다 작음 (<) |
6 | $lte 보다 작거나 같음 (<=) |
7 | $ne 같지 않음 (! =) |
8 | $nin 배열의 값과 같지 않은 경우 |
예를 들어, 우리는 21 세 이상의 학생 목록을 얻는 데 관심이 있습니다. 필터에서 $ gt 연산자 사용find() 다음과 같이 방법-
students=db['students']
docs=students.find({'age':{'$gt':21}})
for doc in docs:
print (doc.get('Name'), doc.get('age'), doc.get('marks'))
PyMongo 모듈은 update_one() 과 update_many() 특정 필터 표현식을 만족하는 하나 이상의 문서를 수정하는 방법.
이름이 Juhi 인 문서의 표시 속성을 업데이트 해 보겠습니다.
from pymongo import MongoClient
client=MongoClient()
db=client.newdb
doc=db.students.find_one({'Name': 'Juhi'})
db['students'].update_one({'Name': 'Juhi'},{"$set":{'marks':150}})
client.close()