2015-06-11 5 views
0

Я пытаюсь попросить пользователя ввести данные для выполнения вставки, он работает всякий раз, когда у меня есть числа, но когда я ввожу буквы, он дает мне ошибку «LettersUsed» не определен , Я попытался преобразовать вход в str (ввод («Что бы ни случилось»)), но это не помогло никому помочь, почему оно это делает?Ввод строки в MongoDB с использованием Pymongo

import pymongo 
import sys 

#get a connection to database 
connection = pymongo.MongoClient('mongodb://localhost') 
    #get a handle to database 
db=connection.test 
vehicles=db.vehicles 

vehicle_VIN = input('What is the Vehicle VIN number? ') 
vehicle_Make = input('What is the Vehicle Make? ') 
newVehicle = {'VIN' : (vehicle_VIN).upper(), 'Make' : (vehicle_Make)} 

try: 
    vehicles.insert_one(newVehicle) 
    print ('New Vehicle Inserted') 

except Exception as e: 
     print 'Unexpected error:', type(e), e 

#print Results 
results = vehicles.find() 

print() 
# display documents in collection 
for record in results: 
    print(record['VIN'] + ',',record['Make']) 
#close the connection to MongoDB 
connection.close() 
+0

Вы показываете нам неправильный код. Ваша ошибка с переменной 'LettersUsed' не определена, когда вы пытаетесь ее использовать, но при этом код не использует эту переменную вообще. –

+0

Я не цитировал, знаю, как это произнести, но в основном я ввожу во вход что-то, и я использую буквы, которые он вызывает у меня ошибку «Независимо от того, что я использовал», скажу, что я использовал FJ3132D, это было бы NameError: name 'FJ3132D не определено или если я использовал 3JDAD, это было бы NameError: имя '3JDAD' не определено. Я просто пытаюсь вставить строку в документ. Означает ли это? – Aaron

+0

Ваш код работает отлично, если вы замените 'print 'Unexpected error:', type (e), e' с' print ('Unexpected error:', type (e), e) 'и исправьте отступ этой строки. Можете ли вы опубликовать всю ошибку трассировки стека. –

ответ

0

Message: name 'DAFEQF' is not defined

В Python 2, код input() равно eval(raw_input(prompt)). Это означает, что любой вход, который вы вводите, Python2 пытается «оценить» этот вход и будет жаловаться, что ваш ввод не определен.

Убедитесь, что вы замените input() с raw_input() (это только для python2!)

Заменить

vehicle_VIN = input('What is the Vehicle VIN number? ') 
vehicle_Make = input('What is the Vehicle Make? ') 

с

vehicle_VIN = raw_input('What is the Vehicle VIN number? ') 
vehicle_Make = raw_input('What is the Vehicle Make? ') 
+0

Я пробовал его в новом проекте, и я получаю ту же ошибку, когда пытаюсь ввести vehicle_VIN с любыми буквами в нем. – Aaron

+0

OK Я вижу вашу проблему сейчас. Вы работаете в Python2, но имеете код Python3. Я обновил ответ - вам нужно заменить 'input (..)' на 'raw_input (...)' –

+0

Yup, который сделал это сразу же за вашу помощь! – Aaron

Смежные вопросы