-상황설명:
클라이언트에서 서버로 데이터를 보내주고 그것을 DB에 넣는 작업중,
서버에서 count라는 변수를 하나씩올려서 DB에 넣어줄때 카운트값도 같이 넣어주고 싶었다.
{
name: jin
age: 12
count:1
}
{
name: kim
age: 22
count:2
}
이런식으로 말이다.
처음에 썻던 방법은 지금 디비에있는 딕셔너리가 몇개인지
count = len(list(db.find({})))
이렇게 가져와서 그 갯수 +1을 해줘서 카운트 값을 매겼었다
근데 그렇게하니까 디비의 딕셔너리 하나를 지우면 예를들어 count가 1,2,3 이렇게 커지고 있는데 1을 지우면 2,3이 남게된다.
-문제점:
그럼 그다음에 디비에 들어오는 딕셔너리에 count 4가 되어야되는데 3이들어간다
왜냐면 로직을 현재 디비에 들어있는 데이터 갯수를 기준으로 count를 하게 짯기 떄문이다.
디비에 두개가 들어있으니까 그다음에 오는건 count=3 이런식으로했기때문에
-해결방법:
count를 디비에 들어있는 데이터갯수를 기준으로 하지말고
전역변수로 count를 만들어주고 그 변수값을 디비에 넣어주는 함수가 실행될때마다
1씩 커지게 하고 그걸 디비에 같이 들어가게 해주었다.
만든방법은 전역변수를 써서 만들었다
아래는 전역변수 사용방법이다
global a
a = 10
def test():
global a
a = 3
b = 2
return a + b
print(test())
print(a)
#결과는 5,3이 출력된다
파이썬은 위와같이
global 변수
변수 = 넣고싶은 데이터
이렇게 해줘야 되는거같다
global 변수 = 넣고싶은 데이터
이렇게 한번에 안된다(적어도 내 개발환경에서는)
그리고 함수안에서도
global 변수
변수 = 넣고싶은 데이터
다시 이런식으로 해줘야 전역변수에 영향을 미칠수있다.
'TIL,WIL(일간,주간 회고)' 카테고리의 다른 글
2022.12.10 TIL 자바스크립트 var,let,const 차이 (0) | 2022.12.10 |
---|---|
2022.12.10 TIL call by value, call by reference, Call by assignment(call by object) (1) | 2022.12.10 |
2022.12.07 TIL CSS position 개념 (0) | 2022.12.08 |
2022.12.07 TIL css의 offset개념 (0) | 2022.12.08 |
2022.12.06 TIL div배치 문제 (0) | 2022.12.06 |