2015-07-29 5 views
0

Я пытаюсь проверить, существует ли строка с тем же именем, моя база данных с python и не может ее получить, вот что я пытаюсь: (Я знаю, что соединение wokring)MySQLdb - Проверьте, существует ли строка Python

try: 
    cursor.execute("SELECT Name, COUNT(*) FROM Item_Info WHERE Name = %s GROUP BY Name"), (item_name) 
catch: 
    print "it does not exist" 

Может кто-то помочь мне здесь

Благодарности

+0

@ VigneshKalai забрасывает исключение, когда элемент существует – spenf10

ответ

10
  1. Прежде всего вы имеете неправильный синтаксис в коде. Python не имеет блока try...catch. Он имеет try...except блок, который используется, как это:

    try: 
        #something here 
    except: 
        #something here 
    
  2. MySQL не возвращает сообщение об ошибке при использовании SELECT команды. Однако есть два разных способа узнать, вернули ли они что-то или нет.

    cursor.execute(
        "SELECT Name, COUNT(*) FROM Item_Info WHERE Name = %s GROUP BY Name", 
        (item_name,) 
    ) 
    # gets the number of rows affected by the command executed 
    row_count = cursor.rowcount 
    print("number of affected rows: {}".format(row_count)) 
    if row_count == 0: 
        print "It Does Not Exist" 
    

Другой способ сделать это было бы принести заявление и проверить, если он пуст:

#execute statement same as above 
msg = cursor.fetchone() 
# check if it is empty and print error 
if not msg: 
    print 'It does not exist' 

Это мой первый ответ, поэтому я не знаю, как стиль код в ответе должным образом, из-за этого также кажется грязным. Простите за это.

Также я использую Python 3 и pymysql, поэтому может возникнуть некоторая синтаксическая ошибка, но я попытался написать код в соответствии с python 2.7 из того, что я мог вспомнить об этом.

+1

Хороший первый ответ, не отставайте от хорошей работы: ^) См. Также ['EXISTS'] (http://stackoverflow.com/questions/5264658/is -exists-more-efficient-than-count0) MySQL. – bufh

+0

Спасибо, да, «Exists», безусловно, выглядит лучше, поскольку он прекращает итерацию после возвращения строки. – Digvijayad

+0

Спасибо, это работает. Однако вам нужна скобка вокруг вашего заявления на печать. –

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