
* 겪고 있는 문제 상황을 최대한 자세하게 작성해주세요.
* 문제 해결을 위해 어떤 시도를 해보았는지 구체적으로 함께 알려주세요.
튜터님 강의내용처럼 저장완료! 까지는 문제없이 진행되는데
몽고 DB에 저장이 되지 않습니다.
3주차부터 몽고 DB에 users 파일이 올라가지 않아서 질문을 드렸었는데
from pymongo import MongoClient
client = MongoClient('내 주소')
db = client.dbsparta
대신에 pip install certifi를 하고
from pymongo import MongoClient
import certifi
ca = certifi.where()
client = MongoClient('내 주소', tlsCAFile=ca)
db = client.dbsparta
를 써보라고 하셨을때 해결이 되어서 이것도 마찬가지로
from flask import Flask, render_template, request, jsonify
app = Flask(__name__)
from pymongo import MongoClient
import certifi
ca = certifi.where()
client = MongoClient('mongodb+srv://sparta:test@cluster0.ykykltm.mongodb.net/?retryWrites=true&w=majority', tlsCAFile=ca)
db = client.dbsparta
@app.route('/')
def home():
return render_template('index.html')
@app.route("/mars", methods=["POST"])
def mars_post():
name_receive = request.form['name_give']
address_receive = request.form['address_give']
size_receive = request.form['size_give']
doc = {
'name':name_receive,
'address':address_receive,
'size':size_receive
}
return jsonify({'msg':'저장완료!'})
@app.route("/mars", methods=["GET"])
def mars_get():
return jsonify({'msg':'GET 연결 완료!'})
if __name__ == '__main__':
app.run('0.0.0.0', port=5000, debug=True)
이런 식으로 짜보게 되었는데 localhost를 여는것과 주문하기까지는 문제가 없는데
이 데이터가 아무리 해봐도 mongodb에 올라가지가 않습니다.
튜터님이 완성본으로 올려주신
from flask import Flask, render_template, request, jsonify
from pymongo import MongoClient
app = Flask(__name__)
client = MongoClient('mongodb+srv://sparta:test@cluster0.ykykltm.mongodb.net/?retryWrites=true&w=majority')
db = client.dbsparta
@app.route('/')
def home():
return render_template('index.html')
@app.route("/mars", methods=["POST"])
def mars_post():
name_receive = request.form['name_give']
address_receive = request.form['address_give']
size_receive = request.form['size_give']
doc = {
'name':name_receive,
'address':address_receive,
'size':size_receive
}
return jsonify({'msg':'저장완료!'})
@app.route("/mars", methods=["GET"])
def mars_get():
return jsonify({'msg':'GET 연결 완료!'})
if __name__ == '__main__':
app.run('0.0.0.0', port=5000, debug=True)
를 써보면 처음 GET도 뜨지 않고 주문완료!도 뜨지 않습니다..
4주차 5주차 다른 프로젝트도 전부 MongoDB에 저장이 되지 않거나 GET POST가 뜨지 않거나 둘중 하나씩 문제가 발생되서 진행이 안되고 있습니다. 이유가 뭔지 너무나 궁금합니다...
127.0.0.1 - - [17/May/2023 18:07:16] "POST /mars HTTP/1.1" 500 -
Traceback (most recent call last):
File "C:\Users\user\Desktop\sparta\projects\02.mars\venv\lib\site-packages\flask\app.py", line 2213, in __call__
return self.wsgi_app(environ, start_response)
File "C:\Users\user\Desktop\sparta\projects\02.mars\venv\lib\site-packages\flask\app.py", line 2193, in wsgi_app
response = self.handle_exception(e)
File "C:\Users\user\Desktop\sparta\projects\02.mars\venv\lib\site-packages\flask\app.py", line 2190, in wsgi_app
response = self.full_dispatch_request()
File "C:\Users\user\Desktop\sparta\projects\02.mars\venv\lib\site-packages\flask\app.py", line 1486, in full_dispatch_request
rv = self.handle_user_exception(e)
File "C:\Users\user\Desktop\sparta\projects\02.mars\venv\lib\site-packages\flask\app.py", line 1484, in full_dispatch_request
rv = self.dispatch_request()
File "C:\Users\user\Desktop\sparta\projects\02.mars\venv\lib\site-packages\flask\app.py", line 1469, in dispatch_request
return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)
File "c:\Users\user\Desktop\sparta\projects\02.mars\app.py", line 24, in mars_post
db.mars.insert_one(doc)
File "C:\Users\user\Desktop\sparta\projects\02.mars\venv\lib\site-packages\pymongo\collection.py", line 628, in insert_one
self._insert_one(
File "C:\Users\user\Desktop\sparta\projects\02.mars\venv\lib\site-packages\pymongo\collection.py", line 569, in _insert_one
self.__database.client._retryable_write(acknowledged, _insert_command, session)
File "C:\Users\user\Desktop\sparta\projects\02.mars\venv\lib\site-packages\pymongo\mongo_client.py", line 1475, in _retryable_write
with self._tmp_session(session) as s:
File "C:\Users\user\AppData\Local\Programs\Python\Python38\lib\contextlib.py", line 113, in __enter__
return next(self.gen)
File "C:\Users\user\Desktop\sparta\projects\02.mars\venv\lib\site-packages\pymongo\mongo_client.py", line 1757, in _tmp_session
s = self._ensure_session(session)
File "C:\Users\user\Desktop\sparta\projects\02.mars\venv\lib\site-packages\pymongo\mongo_client.py", line 1740, in _ensure_session
return self.__start_session(True, causal_consistency=False)
File "C:\Users\user\Desktop\sparta\projects\02.mars\venv\lib\site-packages\pymongo\mongo_client.py", line 1685, in __start_session
self._topology._check_implicit_session_support() File "C:\Users\user\Desktop\sparta\projects\02.mars\venv\lib\site-packages\pymongo\topology.py", line
538, in _check_implicit_session_support
self._check_session_support()
File "C:\Users\user\Desktop\sparta\projects\02.mars\venv\lib\site-packages\pymongo\topology.py", line
554, in _check_session_support
self._select_servers_loop(
File "C:\Users\user\Desktop\sparta\projects\02.mars\venv\lib\site-packages\pymongo\topology.py", line
238, in _select_servers_loop
raise ServerSelectionTimeoutError(
pymongo.errors.ServerSelectionTimeoutError: ac-66k5agj-shard-00-02.ykykltm.mongodb.net:27017: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate has expired (_ssl.c:1124),ac-66k5agj-shard-00-00.ykykltm.mongodb.net:27017: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate has expired (_ssl.c:1124),ac-66k5agj-shard-00-01.ykykltm.mongodb.net:27017: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate has expired (_ssl.c:1124), Timeout: 30s, Topology Description: <TopologyDescription id: 6464991fcb38299238f926ea, topology_type: ReplicaSetNoPrimary, servers: [<ServerDescription ('ac-66k5agj-shard-00-00.ykykltm.mongodb.net', 27017) server_type: Unknown, rtt: None,
error=AutoReconnect('ac-66k5agj-shard-00-00.ykykltm.mongodb.net:27017: [SSL: CERTIFICATE_VERIFY_FAILED]
certificate verify failed: certificate has expired (_ssl.c:1124)')>, <ServerDescription ('ac-66k5agj-shard-00-01.ykykltm.mongodb.net', 27017) server_type: Unknown, rtt: None, error=AutoReconnect('ac-66k5agj-shard-00-01.ykykltm.mongodb.net:27017: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate has expired (_ssl.c:1124)')>, <ServerDescription ('ac-66k5agj-shard-00-02.ykykltm.mongodb.net', 27017) server_type: Unknown, rtt: None, error=AutoReconnect('ac-66k5agj-shard-00-02.ykykltm.mongodb.net:27017: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate has expired (_ssl.c:1124)')>]>
