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

cx-oracleにクエリの結果をタプルではなくディクショナリにバインドさせるにはどうすればよいですか?

    Bindvarsは、

    などのクエリを実行するために使用されます
    • 名前で(名前付きパラメーターを指定)

      cursor = self.db.cursor()
      cursor.execute("SELECT bookName, author from books where Id=:bookId" , bookId="155881")
      print cursor.bindnames()
      

    印刷されます:['BOOKID']

    • 値のリストを指定して位置ごとに

      cursor = self.db.cursor()
      cursor.prepare("insert into books (bookId,title,author,price) values(:1, :2, :3, :4)")
      cursor.executemany(None, listOfbookwhichAreTuppleOf4Field )
      

    期待どおりの結果を得るには、次のような方法を試すことができます。

    def connect():  
        dsn = cx_Oracle.makedsn("host", 1521, "sid")
        orcl = cx_Oracle.connect('scott/[email protected]' + dsn)
        curs = orcl.cursor()
        sql = "select * from sometable"
        curs.execute(sql)
        desc = [d[0] for d in curs.description]
        result = [dict(zip(desc,line)) for line in curs]
        curs.close()
    


    1. 目的の値の代わりにリソースID#8を返すMysqlクエリ

    2. 一意性の制約を条件付きで適用できますか?

    3. WHERE句とINNERJOINが機能しないMySQL更新クエリ

    4. C#をOracleに接続する