
IT/DB 2021. 8. 3.
Mongoengine 키, 인덱스 등록시 2개 이상 필드로 unique 등록
하나의 필드가 하나의 키나 인덱스로 작용이 되면 unique=True 이렇게 편하게 주면 되는데, 2개의 필드가 합쳐야 유일한 키가 되는 경우는 어떻게 하나? 당연히 선지자들은 많이 해본 경험으로 이런 함수를 만들어 두었네 unique_with='같이고려해야하는필드명' 이렇게 선언부에 넣어두면 된다는 말씀. 원본 문서에서 가져옴 https://docs.mongoengine.org/guide/defining-documents.html#uniqueness-constraints 2.3.3.6. Uniqueness constraints MongoEngine allows you to specify that a field should be unique across a collection by providing un..

IT/DB 2021. 7. 15.
MongoDB - 이미지 파일 같은 바이너리 데이터 입력하기
요거요거 DB 에 바이너리 데이터를 입력해 둬야 한다. 머 FTP를 이용해서 파일은 따로하고, DB에는 Meta 데이터만 넣고 처리할 수 있으나 한번에 되는게 효율적이긴 하고 사용자도 더 편리할 듯~~~~ 다행히 MongoDB 를 쓰기 위해 사용준인 MongoEngine에는 FileField 라는 것이 정의되어 있다. 간단하게 사용할 수 있는 예제를 아래 페이지에서 찾아 낼 수 있었다. https://www.tutorialspoint.com/mongoengine/mongoengine_gridfs.htm MongoEngine - GridFS - Tutorialspoint MongoEngine - GridFS In MongoDB, the files with size larger than 16 MB are s..

IT/DB 2021. 6. 21.
Flask MongoEngine 쿼리 filter() 함수 문자열 - Query Operators
Flask MongoEngine 쿼리 filter() 함수 문자열에 대해서 정리해 둬보자. (사실 해본거 하나만 더 적어두자, 해본거니깐) 맨날 = 만 쓰려니 MongoEngine 홈페이지에 가면 다양한 operator 가 있다 쿼리로 사용할 수 있는, 가장 기본적인 예제로 아래와 같이 18세 이하 사용자를 찾아라 같은 예제가 있다. # Only find users whose age is 18 or less young_users = Users.objects(age__lte=18) 즉, 필드명에다가 언더스코어 2개를 넣고 원하는 기능어를 넣으면 쿼리 스트링이 완성된다. 필드명__operator 오퍼레이터의 종류는 아래와 같다. https://docs.mongoengine.org/guide/querying...

IT/DB 2021. 6. 15.
mongodb - Flask mongoengine 필드 동일값을 그룹으로 묶기
저장된 데이터를 특정한 필드 값으로 그룹을 묶고 싶을때가 있다. 같은 값을 가진 문서가 몇개인지 궁금할 때가 가장 단순한 예가 되겠다. 이런 경우 aggregate 함수를 활용하면 된다. 몽고db 매뉴얼 페이지에서 해당 내용을 가져와 보자. https://docs.mongodb.com/manual/reference/operator/aggregation/sum/ Grouping the documents by the day and the year of the date field, the following operation uses the $sum accumulator to compute the total amount and the count for each group of documents. db.sales..

IT/DB 2021. 6. 11.
mongodb - Flask mongoengine을 이용하여 필드 추가, 삭제
이미 설계 이후에, 스키마가 변경되어서 다큐먼트 필드가 추가되거나 삭제되는 경우가 있다. 이때 새로운 레코드는 해당 필드가 있는데, 기존 레코드에 없다면 좀 이상하기도 합니다. 혹은 필드를 삭제하는 경우도 있어 이경우도 기존 DB 에 반영해야 한다. Mongoengine 을 이용하는 경우 해당 클래스에 필드를 추가, 삭제하고 난 뒤에, 추가된 필드의 경우 아래처럼 모든 objects 에 해당 필드값을 채워주기만 하면 된다. 해당클래스.objects.update(추가필드1=0,추가필드2="") 삭제되는 필드의 경우 아래처럼 명령을 내리면 해결된다. 해당클래스.objects.update(unset__code=True) # Note: code 라는 필드를 없애라 BJ. Markus Winkler 님의 사진, ..

IT/DB 2021. 6. 9.
Flask mongoengine Objects() 와 Objects.get() 차이점
문제 정의는 flask mongoengine 에서 하고 있지만, mongoengine 이라는 것이 Django ORM 특성을 가져온 것으로 알고 있어 비스무리 한 곳을 찾아보았다. 원하는 답은 찾은 듯 하여 여기에 남겨두다. 머 쉽게는 리스트를 리턴해야 하는데 Objects.get()을 쓰면 제일 첫번째 놈 object 만 리턴한다는 것! https://code4human.tistory.com/81 [Django] Django의 ORM : get() 과 filter() 비교 Django ORM을 작성하면서 SQL문을 확인하곤 한다. 오류를 발견하면서 헷갈리는 get() 과 filter()을 간단히 정리한다. fetchone # ORM User.objects.get(id=1) #Return : Object..

IT/파이썬 2021. 2. 17.
파이썬 Mongoengine 에서 Document 삭제 방법 flask
파이썬 Mongoengine 에서 Document 삭제 방법 flask flask mongoengine 을 쓴다면 아래 방법으로 document 를 삭제할 수 있다. delete()로 간단하게 지울 수 있다. lunch = Food.objects.first() // Get a single 'Food' instance lunch.delete() // Delete it! 혹은 바로 찾아서 지우는 것도 가능하다. Food.objects(type="snacks").delete() Mongo shell 에서 지우려면 아래와 같이 수행하면 된다. > db.food.remove( { type : "snacks" } ) > db.monsters.deleteOne({ name: 'Zerp' }); 이 모든 내용은 아래 ..

IT/파이썬 2021. 2. 14.
파이썬 mongodb mongoengine 데이터 가져오기
mongoengine 에서 데이터 즉, Document 단위의 데이터를 가져오려면 기본적으로 클래스명.obects 를 하면 전체 Document 를 가져올 수 있다. 이전에 살펴본 대로, 여기서 필터링을 통해 원하는 조건의 데이터만 가져오려면 targetCollection = Customer.objects(id=customerid) 이렇게 조건식을 objects 에 매개변수로 넘겨주면 된다. 대부분 리스트로 리턴하게 되는데 조건에 맞는 하나의 데이터를 가져오려면 혹은 unique ID 를 조건으로 주고 하나의 데이터만 딱 가져오려면 그냥 obect 에 조건식을 주지 말고 하나 더 단어를 쓰자 customer = Customer.objects.get(id=body["customerid"]) 클래스명.obj..

IT/파이썬 2021. 2. 14.
파이썬 mongodb MongoEngine 사용시 filter 함수
mongoengine 을 쓸때, 데이터를 필터링해서 내는 조건을 적는 구문이 2개 나온다. (what-is-the-difference-of-objects-and-filter-in-mongoengine?) objects(필터링조건) objects.filter(필터링조건) 무슨 차이가 있어 찾아보다가 클리어 한 대답. 아무런 차이가 없다 There is no difference, one is an alias of the other: stackoverflow.com/questions/27340789/what-is-the-difference-of-objects-and-filter-in-mongoengine What is the difference of objects and filter in mongoengine..

IT/파이썬 2021. 1. 11.
파이썬 flask Mongodb 연결하기 - flask_mongoengine
파이썬 flask Mongodb 연결하기 flask_mongoengine 을 사용하는 경우, mongodb 연결 문자열을 만드는 코드를 참고용으로 남겨둔다. 보통 가장 기본적인 코드는 host 에 적혀있는 것인데, 사용자 로그인이 필요하다면 아래 코드를 참고하도록 하자. app.config['MONGODB_SETTINGS'] = { # 'host': 'mongodb://localhost/movie-bag' 'db': '데이터베이스이름', 'host': '접속 주소, 아이피 같은거', 'port': 27017, #기본포트넘버 'username':'사용자아이디', 'password':'사용자패스워드', 'authentication_source': 'admin' # 이줄은 그냥 넣어줘야 되더라구, 흠, 찾아봐..
