sql >> Databáze >  >> RDS >> Oracle

Jak mohu přimět cx-oracle svázat výsledky dotazu se slovníkem, nikoli s n-ticí?

Bindvars se používají k provedení dotazu, jako je

  • Podle jména (s danými pojmenovanými parametry)

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

vytiskne:['BOOKID']

  • podle pozice se seznamem hodnot

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

Chcete-li získat to, co jste očekávali, můžete zkusit něco takového:

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. MySQL, kde NENÍ V poli jmen?

  2. Co je uložená procedura a proč uložená procedura?

  3. SQL Server:Jak získat referenci na cizí klíč z information_schema?

  4. dotaz mysqli vrací pouze první řádek