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

cx_Oracleで名前を検索します

    しないでください Pythonでこれを行います。データベーステーブルで何かを検索したい場合、SQLで検索するのが最も速くて効率的な方法です。 バインド変数> 。

    カーソルオブジェクトがcursであると仮定します 次のようになります(テーブルがvarで一意であると仮定します) 。

    >>> sql = "select * from my_table where var = :var"
    >>> bind_variables = {'var' : 'smth'}
    >>>
    >>> curs.execute(sql, bind_variables)
    [<cx_Oracle.STRING with value None>]
    >>> results = curs.fetchall()
    >>> results
    [('smth',)]
    >>> try:
    ...     var = results[0][0]
    ...     print ('Yes')
    ... except IndexError:
    ...     print ('No')
    ...
    Yes
    

    次に、存在しないものを探している場合は、次のようになります。

    >>> bind_variables = {'var' : 'other'}
    >>> results = curs.fetchall()
    >>> results
    []
    >>> try:
    ...     var = results[0][0]
    ...     print ('Yes')
    ... except IndexError:
    ...     print ('No')
    ...
    No
    

    期待どおりの結果が得られない実際の理由は、cx_Oracleが PEP 249 。返される列は1つだけなので、自分のやり方でやりたい場合は、タプルの0インデックスにアクセスする必要があります。

    >>> rows = [('other',),('smth',)]
    >>> var = 'smth'
    >>> for row in rows:
    ...     if var == row[0]:
    ...         print ('Yes')
    ...
    Yes
    



    1. インデックスの列の順序はどのくらい重要ですか?

    2. MySQLに平日のリストを保存する方法は?

    3. OracleSQLの日付をLongに、またはその逆。

    4. 断続的なMySQLサーバーがなくなったエラー