📝 TIL

[TIL] Python 문자열 제거, pymongo 역정렬, MongoDB에 id 부여

오늘 ONEUL 2022. 11. 4. 22:10

✍ Today I Learned

 

2022.10.29 - [TIL] 웹의 동작 개념, CSS 모바일, DOMContentLoaded

  • 웹개발 종합반 1주차 ~ 2주차 강의에 이어 3주차 ~ 4주차 강의를 듣고 정리한 내용이다.
  • 사용 경험이 적은 언어(Python)와 데이터베이스(MongoDB)였지만 내가 알고 있는 것들과 비교해보는 재미가 있었다!

 


 

특정 문자열 대체, 제거 replace()

string.replace(oldvalue, newvalue, count)
  • 차례대로 찾을 값, 바꿀 값, 바꿀 횟수(옵션)를 입력하면 해당 string에서 특정 문자열을 대체한다.

 

 

문자열 및 공백 제거 strip()

string.strip(characters)
  • 인자로 전달받은 문자를 String의 왼쪽과 오른쪽에서 제거한다.
  • 인자를 전달하지 않으면 공백을 제거한다.
  • 인자로 문자 1개를 전달하면 그 문자와 동일하지 않은 문자가 나올 때까지 제거한다.
  • 인자로 여러 문자를 전달하면 그 문자들과 동일한 것들을 모두 제거한다.

 

 

MongoDB Atlas란?

  • MongoDB Atlas는 MongoDB를 설계한 사람들이 만든 모든 것을 관리하는 클라우드 데이터베이스이다.
  • 클라우드 3사(AWS, Azure, GCP)에서 다 사용 가능하다.
  • 유저가 몰리거나, DB를 백업해야 하거나, 모니터링 하기가 아주 용이하기 때문에 사용한다.

 

 

pymongo 역정렬 sort()

db.col.find().sort('UserName', 1) # 오름차순
db.col.find().sort('UserName', -1) # 내림차순
  • 매개변수로 key를 지정하여 데이터를 정렬한다.
  • 두 번째 매개변수를 생략하거나 1은 오름차순, -1은 내림차순이다.
  • 데이터를 최신순으로 불러오고 싶을 때는 id key를 기준으로 역정렬을 한다.

 

 

MongoDB에 id 부여하기

시퀀스가 없다구요?

  • 버킷리스트를 구현 중, 하나하나의 완료 여부를 업데이트하려고 보니 각 데이터에 id 값이 필요했다.
  • MongoDB는 MySQL의 Auto-increment 같은 시퀀스를 따로 지원하지 않는다.
  • 따라서 DB 데이터를 list로 불러와 list 요소의 개수를 구하고 + 1 한 값을 id로 넣어준다.
count = list(db.bucket.find({},{'_id':False}))
num = len(count) + 1

 

list의 요소 개수 구하기 len()

len( "abc" )
print(len) # 3

len( [ 11, 22, 33, 44, 55, 66 ] )
print(len) # 6
  • 문자열에서는 문자열의 길이를 반환한다.
  • list에서는 요소의 개수를 반환한다.

 

문자열을 숫자로 변환하기 int()

num_str = '10'
print(num_str) # 10
print(type(num_str)) # <class 'str'>

num = int(num_str)
print(num) # 10
print(type(num)) # <class 'int'>
  • 인자로 전달된 문자열을 Integer로 변환한다.
  • 서버로 숫자를 넘겨주어도 JSON은 무조건 String으로 전달되기 때문에 클라이언트에서 보내준 id값을 서버에서 사용하려면 int로 변환해주어야 한다.

num의 데이터타입은 int, bucket의 데이터타입은 String

@app.route("/bucket/done", methods=["POST"])
def bucket_done():
    num_receive = request.form["num_give"]
    db.bucket.update_one({'num': int(num_receive)}, {'$set': {'done': 1}})
    return jsonify({'msg': '버킷 완료!'})