반응형
mongodb 익히려고 python프로젝트에 한번 써보았다.
pymongo가 좀 인기 있는거 같은데 mongoengine을 한번 써보자. 더 쓰기 간편한 것 같기도하고...
https://github.com/MongoEngine/mongoengine
위의 사이트 접속해보면 Object-Document-Mapper 라는게 눈에 띈다.
ORM을 쉽게 적용할 수 있게 해주는 파이선 모듈 같았다. 일단 한번 써보도록하장!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | from mongoengine import * from datetime import datetime from .. import config connect('connect1', host='mongodb://' + config['mongodb_host'] + ':' + config['mongodb_port'] + '/' + config['mongodb_name']) class Board(Document): title = StringField(required=True, max_length=200) contents = StringField(required=True, max_length=3000) writer = StringField(required=True, max_length=100) date = DateTimeField(default=datetime.utcnow) tags = ListField(StringField(max_length=50)) meta = {'allow_inheritance': True} | cs |
게시판 Document 스키마를 위 같이 만들었다.(mongodb는 미리 db 계정만 만들어놓고 collection은 따로만들필요없다. 왜냐하면 첫 데이터 insert하게 되면 자동으로 collection이 없으면 생성해준다.)
위에서 config는 설정파일에 써둔 db host와 port(27017번) db명을 그냥 저렇게 불러와서 사용해봤다..(__)
그런 다음 쟤를 사용할 라우터 함수에 코드를 추가해보자
1 2 3 4 5 6 7 8 9 | from ..board import Board @blueprint.route('/form', methods=['POST']) def form_post(): post = Board(writer=request.form['writer'] , title=request.form['title'] , contents=request.form['contents'] ) post.save() | cs |
Board 클래스를 임포트해와서 그냥 저렇게 써주면 된다. (개간단하네)
form 데이타 저런식으로 이름 맞추고 submit하니깐...
잘들어 간걸 확인 할 수 있다...
list를 조회 하고 싶다면
1 2 3 4 | @blueprint.route('/') def index(): return render_template('board/list.html', collection=Board.objects) | cs |
앞서 임포트한 모듈에서 .objects 하면 모두 불러와진다.
반응형
'개발 이야기 > Python' 카테고리의 다른 글
Python Script 작성시 argument 여러개 받기 (0) | 2019.07.16 |
---|---|
Selenium으로 웹브라우저 테스트 자동화 (1) | 2019.03.16 |
Python_bson을 json으로 바꾸는 방법 (0) | 2019.02.14 |
Python_pymongo 간단 사용법 (0) | 2019.02.12 |
Python_Flask app에서 filter 만들기 (0) | 2018.11.26 |