sql >> データベース >  >> RDS >> Mysql

MySQLdb-行が存在するかどうかを確認しますPython

    1. まず、コードの構文が間違っています。 Pythonにはtry...catchがありません ブロック。 try...exceptがあります このように使用されるブロック:
    try:
        # something here
    except:
        # something here
    
    1. SELECTを使用しても、MySQLはエラーを返しません。 指図。ただし、何かが返されたかどうかを確認する方法は2つあります。

    PYTHON 2.7

    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"
    

    PYTHON 3+

    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を使用しているため、構文エラーが発生する可能性がありますが、覚えていることからpython2.7に従ってコードを記述しようとしました。

    編集 (2020年5月1日)

    最初のメソッドでは、row_countを使用する前にすべての行をフェッチする必要があることを指摘してくれた@Arishtaに感謝します。つまり、cursor.fetchall()を追加します row_count = cursor.rowcountの前

    cursor.execute(
        "SELECT Name, COUNT(*) FROM Item_Info WHERE Name = %s GROUP BY Name",
        (item_name,)
    )
    # Add THIS LINE
    results = cursor.fetchall()
    # 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")
    

    cursor.fetchone()を使用します レコードが存在するかどうかだけを気にする場合。



    1. MySQL:SQL構文にエラーがあります...'desc)VALUES(' Idea'、' Description')'の近く

    2. セット名とmysqli_set_charset— mysqli_escape_stringに影響を与える以外に、それらは同一ですか?

    3. PDOを使用して、クエリの選択した部分にプレースホルダーを配置できますか?

    4. PHPおよびMySQLでSphinxを使用するためのガイド