DB 개괄

DAHYUN SEO·2022년 1월 14일
0

Web Programming

목록 보기
4/4
post-thumbnail

DB개괄

  • 1) 들어가기 전에 - DB는 왜 쓰는 것일까? 👉 (뜬금) 우리가 방 정리를 하는 이유는 무엇일까요? - 1번: 잘 넣어두기 위해서 / 2번: 나중에 잘 찾기 위해서 👉 (뜬금2) 한가지 더! 교보문고에 가서 책을 찾는 다고 하면? - 꽂혀진 방법대로 찾아야 쉽게 찾을 수 있겠죠! 😎 (섹션 → 출판사 → 책 제목) - 우리 눈에 보이진 않지만, 사실 DB에는 `Index` 라는 순서로 데이터들이 정렬되어 있답니다!
  • 2) 들어가기 전에 - DB의 두 가지 종류 👉 Database에는, 크게 두 가지 종류가 있습니다. 👉 **RDBMS(SQL)** 행/열의 생김새가 정해진 엑셀에 데이터를 저장하는 것과 유사합니다. 데이터 50만 개가 적재된 상태에서, 갑자기 중간에 열을 하나 더하기는 어려울 것입니다. 그러나, 정형화되어 있는 만큼, 데이터의 일관성이나 / 분석에 용이할 수 있습니다. ex) MS-SQL, My-SQL 등 👉 **No-SQL** 딕셔너리 형태로 데이터를 저장해두는 DB입니다. 고로 데이터 하나 하나 마다 같은 값들을 가질 필요가 없게 됩니다. 자유로운 형태의 데이터 적재에 유리한 대신, 일관성이 부족할 수 있습니다. ex) MongoDB
  • 3) 들어가기 전에 - DB의 실체에 관하여 👉 자, 그럼 DB의 실체는 무엇일까요? 특별한 컴퓨터일까요? - 아닙니다! 아주 간단하게, 우리가 쓰는 프로그램과 같은 것이랍니다. - 즉, 내 컴퓨터에 게임도 설치하고, PPT도 설치하고, DB도 설치할 수 있는 것이죠. 👉 그 런 데! 이 마저도 요새는 Cloud 형태로 제공해주는 곳들이 많답니다. - 유저가 몰리거나 / DB를 백업해야 하거나 / 모니터링 하기가 아주 용이하기 때문이죠! (꿀팁 - 요새 트렌드는 `클.라.우.드` !) - 그래서, 우리도 최신 클라우드 서비스인 `mongoDB Atlas`를 사용해 볼 것이랍니다!
  • 1) mongoDB - Atlas 연결하기 👉 **pymongo 라이브러리의 역할** 예를 들어, MS Excel를 파이썬으로 조작하려면, 특별한 라이브러리가 필요하지 않겠어요? 마찬가지로, mongoDB 라는 프로그램을 조작하려면, 특별한 라이브러리, pymongo가 필요하답니다!

mongoDB 연결하기

  1. 패키지 설치하기

    ```python
    pymongo, dnspython
    ```
    1. 다시, mongoDB Atlas 화면에서 Connect your application 클릭

    2. pymongo로 조작하기

      ```jsx
      from pymongo import MongoClient
      client = MongoClient('여기에 URL 입력')
      db = client.dbsparta
      ```
    3. 잘 연결됐는지 테스트해보기

      • 아래와 같이 입력! (데이터 넣기. 곧 배워요!)
      doc = {
          'name':'bob',
          'age':27
      }
      
      db.users.insert_one(doc)
    4. 다시 Cluster0의 Collections를 확인하면! 데이터가 잘 들어온 것을 확인 할 수 있답니다!

      👉 이제 한번 연결을 했으니, 복잡한 과정 없이 세 줄만 복사해서 쓰면 되겠네요! 👉 Collections는 '즐겨찾기' 해두면 더 편하겠죠?

pymongo로 DB조작하기

  • 1) pymongo로 mongoDB 조작하기
    • DB연결하기 & 데이터 넣기
      # 'users'라는 collection에 {'name':'bobby','age':21}를 넣습니다.
      db.users.insert_one({'name':'bobby','age':21})
      db.users.insert_one({'name':'kay','age':27})
      db.users.insert_one({'name':'john','age':30})
    • 모든 결과 값을 보기
        ```python
        same_ages = list(db.users.find({},{'_id':False}))
        ```
        
      # 모든 데이터 뽑아보기
      all_users = list(db.users.find({},{'_id':False}))
      
      print(all_users[0])         # 0번째 결과값을 보기
      print(all_users[0]['name']) # 0번째 결과값의 'name'을 보기
      
      for user in all_users:      # 반복문을 돌며 모든 결과값을 보기
          print(user)
    • 특정 결과 값을 뽑아 보기
        ```jsx
        user = db.users.find_one({'name':'bobby'})
        ```
        
      user = db.users.find_one({'name':'bobby'})
      print(user)
    • 수정하기
        ```jsx
        db.users.update_one({'name':'bobby'},{'$set':{'age':19}})
        ```
        
      db.users.update_one({'name':'bobby'},{'$set':{'age':19}})
      
      user = db.users.find_one({'name':'bobby'})
      print(user)
    • 삭제하기 (거의 안 씀)
        ```jsx
        db.users.delete_one({'name':'bobby'})
        ```
        
      db.users.delete_one({'name':'bobby'})
      
      user = db.users.find_one({'name':'bobby'})
      print(user)

0개의 댓글