第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

在線程或進(jìn)程之間共享 cx_Oracle 游標(biāo)

在線程或進(jìn)程之間共享 cx_Oracle 游標(biāo)

藍(lán)山帝景 2021-11-23 16:18:13
我在 Oracle 中有一個(gè)數(shù)據(jù)庫(kù)。我需要導(dǎo)出一些數(shù)據(jù),處理它們并將數(shù)據(jù)保存到文件中。表中是 oracle sdo_geom,我需要將幾何圖形轉(zhuǎn)換為WKT 格式。幾何體真的很大,有數(shù)千個(gè)頂點(diǎn)的大多邊形。我正在使用SDO_UTIL.TO_WKTGEOMETRY()函數(shù),但它花費(fèi)的時(shí)間太長(zhǎng)。在這種情況下,選擇(轉(zhuǎn)換幾何)到數(shù)據(jù)庫(kù)中是一個(gè)瓶頸。我考慮了Python 中的多線程或多處理。該場(chǎng)景應(yīng)如下所示:創(chuàng)建到數(shù)據(jù)庫(kù)的連接創(chuàng)建 cx_Oracle.cursor然后啟動(dòng)多個(gè)共享游標(biāo)的線程或進(jìn)程在每個(gè)線程(或進(jìn)程)中,我將按塊從數(shù)據(jù)庫(kù)(同一個(gè)表)中選擇數(shù)據(jù)然后將所有數(shù)據(jù)發(fā)送到負(fù)責(zé)處理數(shù)據(jù)并保存到文件的線程或進(jìn)程我正在使用fetchmany()通過(guò)塊選擇數(shù)據(jù):def get_row_chunks(self):    while True:        rows = self.cursor.fetchmany()        if not rows:            break        yield rows所以我的問(wèn)題是,是否可以使用多線程或多處理來(lái)解決這個(gè)問(wèn)題,以及如何(使用cx_Oracle)或psycopg2 for PostgreSQL 我認(rèn)為這并不重要。我認(rèn)為光標(biāo)在這些庫(kù)中具有相同的行為。或者不可能在線程或進(jìn)程之間輕松共享游標(biāo)。可能的解決方案是在數(shù)據(jù)庫(kù)中預(yù)生成 WKT 幾何,但這在我看來(lái)是更通用的解決方案。
查看完整描述

1 回答

?
萬(wàn)千封印

TA貢獻(xiàn)1891條經(jīng)驗(yàn) 獲得超3個(gè)贊

您不能同時(shí)對(duì) cx_Oracle 中的一個(gè)游標(biāo)或連接執(zhí)行多個(gè)操作。因此,例如,您不能同時(shí)進(jìn)行提取。如果您嘗試這樣做,您會(huì)發(fā)現(xiàn) fetches 阻塞。因此,我建議您只需在一個(gè)線程中執(zhí)行提取并將提取的數(shù)據(jù)傳遞給另一個(gè)線程或多個(gè)線程進(jìn)行處理。

另一種可能性是創(chuàng)建一個(gè)池,它允許您創(chuàng)建多個(gè)連接并在多個(gè)線程中使用它們(在創(chuàng)建池時(shí)使用 threaded=True 參數(shù))。然后,您可以使用每個(gè)連接來(lái)查詢數(shù)據(jù)的不同部分。


查看完整回答
反對(duì) 回復(fù) 2021-11-23
  • 1 回答
  • 0 關(guān)注
  • 228 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)