Python 處理資料庫返回結果

2022-03-19 17:47:00 字數 1602 閱讀 3429

游標執行後返回的結果都只是資料,但是不帶有列名標識。這裡需要處理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 查...