游標執行後返回的結果都只是資料,但是不帶有列名標識。這裡需要處理2個問題:
解決上面的2個問題,在python裡面可以採用下面的2種方式來處理。
使用namedtuple 和 map object。
使用yield 和 zip。
下面是示例**:
result_from_db需要注意幾點:# mysql 資料庫
import mysql
from mysql import connector
from collections import namedtuple
def generate_namedtuple(cur):
from collections import namedtuple
fieldnames = [d[0].lower() for d in cur.description]
record = namedtuple('record', fieldnames)
rows = cur.fetchall()
if not rows:return
else:
return map(record._make, rows)
def generate_dicts(cur):
fieldnames = [d[0].lower() for d in cur.description]
while true:
rows = cur.fetchmany()
if not rows: return
for row in rows:
yield dict(zip(fieldnames, row))
if __name__ == '__main__':
user = 'herbert'
pwd = '851020'
host = '127.0.0.1'
db = 'world'
cnx = mysql.connector.connect(user=user, password=pwd, host=host,database=db)
cur = cnx.cursor()
cur.execute("select name, countrycode, district, population from city\
where countrycode = 'chn' and population > 500000")
for r in generate_dicts(cur):
print(r['name'], r['population'])
cur.execute("select name, countrycode, district, population from city\
where countrycode = 'chn' and population > 500000")
print("-----------------------------")
for k in generate_namedtuple(cur):
print(k.name, k.population)
cur.close()
cnx.close()
常用資料庫查詢結果處理
import cx oracle def myoracle conn cx oracle.connect user password ip host servicename 連自己的資料庫,連線引數可以組合寫也可以分開寫 cur conn.cursor sql desc table 查詢表結構 cu...
Oracle資料庫返回字元型別 1 1的結果處理
如果實體類中定義的字段是string型別,oracle資料庫中返回的是數字型別,那麼oracle返回0.的時候會丟失前面的0。要想不丟失0,那麼資料庫返回的就要是字串型別的,所以要將返回值轉換成字串型別。例如 select2 3from dual 返回的是數字 select to char 2 3 ...
資料庫查詢返回特定結果即分頁查詢
資料庫查詢返回特定結果即分頁查詢 1 幾種不同資料庫的不同的分頁寫法 a mysql 1 a 查詢前n條記錄 2select from table name limit 0,n 3b 查詢第n條到第m條 4select from table name limit n,m b oracle 1 a 查...