2016-09-09 5 views
2

das Problem ist das folgende Problem. Ich habe eine Sammlung Mongo mit der variablen jobdate, die jetzt als eine Zeichenfolge Ich würde suppose.However, ich brauche eine Route zu Abfrage auszuführen die Variablen in der folgenden Art und Weise:Kann keine Datumsabfrage mit PyMongo

@app.route('/active_jobs/<jobdate>', methods = ['GET']) 
def get_a_date(jobdate): 

ajobs = mongo.db.ajobs 

output = [] 

for q in ajobs.find({'jobdate':jobdate}): 

    output.append ({ 
    'jobdate' : q['jobdate'], 'jobtime' : q['jobtime'],'plant': q['plant'], 
    'po': q['po'], 'company': q['company'], 'client': q['client'], 
    'jobaddress': q['jobaddress'], 'm3': q['m3'], 'use': q['use'], 
    'formula': q['formula'], 'placement': q['placement'], 
    'badmix1': q['badmix1'], 'badmix2': q['badmix2'], 'badmix3': q['badmix3'], 
    'confirmation': q['confirmation'],'status': q['status'] 
    }) 

return jsonify({'result' : output}) 

das Problem hier ist die Tatsache, dass, wenn ich eine GET-Anfrage auf Postman versuche, ich einfach ein leeres {'result':} json-Objekt bekomme. Ich vermute, dass die Abfragestruktur selbst nicht das Problem ist, sondern die Datumsformatierung.

meine POST-Anfrage lautet wie folgt, wie könnte ich die Datumsvariable so formatieren, dass sie sozusagen abfragbar ist.

@app.route('/active_jobs/new', methods=['POST']) 
def add_job(): 

ajobs = mongo.db.ajobs 

jobdate = request.json['jobdate']# date of job 
jobtime = request.json['jobtime']# time of job 
plant = request.json['plant']# plant for job 
po = request.json['po']# production order 
company = request.json['company']# client company name 
client = request.json['client']# person in charge 
jobaddress = request.json['jobaddress']#job address 
use = request.json['use']# concrete use in site 
m3 = request.json['m3']#job volume 
formula = request.json['formula']#job formula 
placement = request.json['placement']#type of placement 
badmix1 = request.json['badmix1']#batch admixture add-on 
badmix2 = request.json['badmix2']#batch admixture add-on 
badmix3 = request.json['badmix3']#batch admixture add-on 
confirmation = request.json['confirmation']#level of confirmation for job 
status = request.json['status']#job status 

ajob_id = ajobs.insert({ 
'jobdate' : jobdate, 'jobtime' : jobtime, 'plant': plant, 
'po' : po, 'company' : company, 'client' : client, 'jobaddress' : jobaddress, 
'use' : use, 'm3' : m3, 'formula' : formula, 'placement' : placement, 
'badmix1' : badmix1, 'badmix2' : badmix2, 'badmix3' : badmix3, 
'confirmation' : confirmation, 'status' : status 
}) 

new_job = ajobs.find_one({'_id' : ajob_id}) 

output = ({ 
'jobdate' : new_job['jobdate'], 'jobtime' : new_job['jobtime'],'plant': new_job['plant'], 
'po': new_job['po'], 'company': new_job['company'], 'client': new_job['client'], 
'jobaddress': new_job['jobaddress'], 'm3': new_job['m3'], 'use': new_job['use'], 
'formula': new_job['formula'], 'placement': new_job['placement'], 
'badmix1': new_job['badmix1'], 'badmix2': new_job['badmix2'], 'badmix3': new_job['badmix3'], 
'confirmation': new_job['confirmation'],'status': new_job['status'] 
}) 

return jsonify({'verify new job': output}) 

HINWEIS: Für die Zwecke der Anwendung muss das Datum Struktur der folgenden YYYY-MM-DD

Antwort

0

Obwohl String-Matching auch funktionieren sollte, wäre es am besten das Datum in Mongo zu speichern, wie ein Datumsobjekt Sie können dies tun, indem Sie strptime verwenden. Für das Format YYYY-MM-DD sollte es im POST so etwas wie folgendes geben:

from datetime.datetime import strptime 

jobdate = strptime(request.json['jobdate'], "%Y-%m-%d").date()