日韩精品一区二区三区在线视频放-无码中文字幕V?一区二区-成年片免费观看视频-国内少妇人妻丰满av-国产精品中文字幕免费观看-亚洲成人久久一区二区三区-国内少妇偷人精品视频无缓冲-一区二区国产精品日本一区二区三区在线网

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線(xiàn)實(shí)戰(zhàn)洞察。

用Python_OracleDB 的調(diào)用Oracle存儲(chǔ)過(guò)程返回Cursor的方法:TaoToken 統(tǒng)一 Key 通道下的可復(fù)制配置與驗(yàn)證

用Python_OracleDB 的調(diào)用Oracle存儲(chǔ)過(guò)程返回Cursor的方法:TaoToken 統(tǒng)一 Key 通道下的可復(fù)制配置與驗(yàn)證 1. Python 調(diào)用 Oracle 存儲(chǔ)過(guò)程返回 Cursor 的真實(shí)場(chǎng)景與坑點(diǎn)如果你正在用 Python 連 Oracle并且存儲(chǔ)過(guò)程里返回的是SYS_REFCURSOR那你大概率會(huì)遇到一個(gè)很典型的問(wèn)題普通cursor.execute()執(zhí)行完拿不到結(jié)果集或者拿到的對(duì)象不是可迭代的行而是一個(gè)綁定變量句柄。這個(gè)場(chǎng)景在報(bào)表查詢(xún)、批量數(shù)據(jù)導(dǎo)出、老系統(tǒng)對(duì)接里非常常見(jiàn)尤其是 Oracle 存儲(chǔ)過(guò)程把查詢(xún)結(jié)果通過(guò)OUT參數(shù)以游標(biāo)形式吐出來(lái)的時(shí)候。我先把結(jié)論說(shuō)清楚Python 的oracledb驅(qū)動(dòng)也就是原來(lái)cx_Oracle的新名字調(diào)用返回 Cursor 的存儲(chǔ)過(guò)程核心動(dòng)作只有三步——用cursor.var()聲明一個(gè)游標(biāo)類(lèi)型的綁定變量、把它作為OUT參數(shù)傳進(jìn)begin ... end;匿名塊、執(zhí)行完之后直接對(duì)這個(gè)游標(biāo)變量做for row in cursor_var迭代。聽(tīng)起來(lái)簡(jiǎn)單但真正卡人的地方在于連接池怎么配、綁定變量類(lèi)型怎么聲明、字段映射怎么對(duì)齊、異常怎么捕獲。這幾個(gè)點(diǎn)任何一個(gè)沒(méi)處理好你看到的報(bào)錯(cuò)就是ORA-01036、DPI-1010、ORA-06550這類(lèi)讓人頭大的信息。這篇內(nèi)容聚焦的就是這條完整鏈路從連接串配置到存儲(chǔ)過(guò)程調(diào)用再到游標(biāo)讀取和異常處理。我會(huì)給出可以直接復(fù)制的配置片段也會(huì)用一個(gè)最小的存儲(chǔ)過(guò)程來(lái)驗(yàn)證 Cursor 返回是否正常。如果你本地已經(jīng)裝好了 Oracle 客戶(hù)端和 Python 環(huán)境跟著走一遍就能復(fù)現(xiàn)。另外說(shuō)明一下本文里涉及模型調(diào)用通道的部分統(tǒng)一走 TaoToken 的 Key 通道來(lái)做演示目的是讓配置片段保持一致的鑒權(quán)方式方便你在同一套環(huán)境里既跑數(shù)據(jù)庫(kù)調(diào)用、又跑模型輔助排查。數(shù)據(jù)庫(kù)本身還是連你自己的 Oracle 實(shí)例TaoToken 只負(fù)責(zé)模型側(cè)的統(tǒng)一入口兩者不混。先明確幾個(gè)前置條件避免你走到一半發(fā)現(xiàn)環(huán)境不對(duì)Python 3.9 及以上推薦 3.11。安裝oracledbpip install oracledb。注意不要再用cx_Oracle新項(xiàng)目直接用oracledb它是官方維護(hù)的。Oracle 客戶(hù)端庫(kù)Instant Client要能被找到或者用 thin 模式。oracledb默認(rèn) thin 模式不需要 Instant Client但如果你要用某些高級(jí)特性比如特定的字符集、外部認(rèn)證還是得配lib_dir。有一個(gè)可用的 Oracle 實(shí)例里面有建存儲(chǔ)過(guò)程的權(quán)限。我試過(guò)在 thin 模式下直接連 Oracle 19c 和 21c基本沒(méi)問(wèn)題。但如果你連的是比較老的 11gthin 模式可能不支持那就得裝 Instant Client 并設(shè)置ORACLE_CLIENT_LIB_DIR或者初始化時(shí)傳lib_dir。存儲(chǔ)過(guò)程這邊假設(shè)我們有一個(gè)測(cè)試用的過(guò)程簽名大概是這樣CREATE OR REPLACE PROCEDURE test1( param1 IN VARCHAR2, param2 IN VARCHAR2, p_cursor OUT SYS_REFCURSOR ) AS BEGIN OPEN p_cursor FOR SELECT a1 AS col_a, a2 AS col_b FROM dual UNION ALL SELECT b1, b2 FROM dual; END; /這個(gè)過(guò)程的邏輯很簡(jiǎn)單接收兩個(gè)入?yún)⒋蜷_(kāi)一個(gè)游標(biāo)返回兩行數(shù)據(jù)。用它來(lái)驗(yàn)證 Cursor 返回是最小可復(fù)現(xiàn)的。你可以在 SQL Developer 或者 sqlplus 里先跑一遍確認(rèn)過(guò)程本身沒(méi)問(wèn)題再去 Python 里調(diào)。很多人第一次調(diào)的時(shí)候會(huì)把OUT SYS_REFCURSOR當(dāng)成普通返回值處理寫(xiě)成result cursor.callproc(...)結(jié)果發(fā)現(xiàn)拿不到行。這就是沒(méi)理解 Oracle 的游標(biāo)是綁定變量機(jī)制。正確做法是用cursor.var(oracledb.CURSOR)聲明一個(gè)游標(biāo)變量傳進(jìn)去執(zhí)行后迭代它。還有一個(gè)高頻坑連接池的dsn寫(xiě)法。192.168.3.169:1521/orclpdb1這種是 EZConnect 格式host:port/service_name。如果你用的是 SID 而不是 service name得寫(xiě)成host:port/SID或者用完整的(DESCRIPTION...)。寫(xiě)錯(cuò)了就是ORA-12514或者DPY-6005。下面進(jìn)入具體配置。我會(huì)先講 TaoToken 的前置準(zhǔn)備再給可復(fù)制的連接與調(diào)用代碼然后是驗(yàn)證和排錯(cuò)。2. TaoToken 統(tǒng)一 Key 通道的前置準(zhǔn)備與模型輔助排查這一節(jié)說(shuō)清楚 TaoToken 在這套流程里扮演什么角色。你調(diào) Oracle 存儲(chǔ)過(guò)程本身不需要 TaoToken數(shù)據(jù)庫(kù)連接是直連你的 Oracle 實(shí)例。但實(shí)際開(kāi)發(fā)中你經(jīng)常需要讓模型幫你解釋報(bào)錯(cuò)、生成 SQL、檢查綁定變量寫(xiě)法這時(shí)候如果每個(gè)工具都單獨(dú)配 Key會(huì)很亂。TaoToken 提供的是一個(gè)統(tǒng)一的 Key 通道把模型調(diào)用收斂到一個(gè)入口Base URL 和 Key 配一次多個(gè)工具復(fù)用。官網(wǎng)入口在這里https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 。你可以先注冊(cè)拿到 Key后面配置里會(huì)用到。拿到 Key 之后模型側(cè)的 Base URL 統(tǒng)一用https://taotoken.net/api注意這個(gè)地址不帶 UTM 參數(shù)是給程序調(diào)用的。Key 的格式一般是一串以sk-開(kāi)頭的字符串具體以你控制臺(tái)里顯示的為準(zhǔn)。如果你只是想讓模型幫你排查 Oracle 報(bào)錯(cuò)最直接的方式是打開(kāi)模型對(duì)話(huà)頁(yè)面把報(bào)錯(cuò)原文貼進(jìn)去。模型對(duì)話(huà)入口https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_contentmodel_chatutm_campaignrewrite 。這個(gè)頁(yè)面適合快速問(wèn)一句“這個(gè) ORA-01036 是什么原因”不用寫(xiě)代碼。如果你是要長(zhǎng)期做編碼、寫(xiě) Agent、跑自動(dòng)化腳本那更適合用 Coding Plan。Coding Plan 入口https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding_planutm_campaignrewrite 。它的定位是給編碼場(chǎng)景用的套餐配合 Claude Code、Cline 這類(lèi)工具比較順。Key 的管理在控制臺(tái)https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewrite 。你可以在這里創(chuàng)建、查看、吊銷(xiāo) Key。API Keys 頁(yè)面https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi_keysutm_campaignrewrite 新建 Key 就在這里。接入文檔https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 里面有各語(yǔ)言的調(diào)用示例配環(huán)境變量、改 Base URL 的寫(xiě)法都能查到。如果你用的是 Claude Code它有自己的接入方式參考https://taotoken.net/claude-code-anthropic?utm_sourcetaotoken_aicg_blog_endutm_contentclaude_codeutm_campaignrewrite 。這個(gè)頁(yè)面講的是怎么把 Claude Code 接到統(tǒng)一通道上。這里要強(qiáng)調(diào)一點(diǎn)TaoToken 是模型調(diào)用的統(tǒng)一入口不是數(shù)據(jù)庫(kù)代理也不是什么中轉(zhuǎn)。你的 Oracle 連接串、賬號(hào)密碼、存儲(chǔ)過(guò)程調(diào)用全都走你自己的網(wǎng)絡(luò)和數(shù)據(jù)庫(kù)跟 TaoToken 無(wú)關(guān)。TaoToken 只處理模型 API 的鑒權(quán)收斂。把這兩件事分清楚后面配置就不會(huì)混。前置準(zhǔn)備清單注冊(cè)并拿到 TaoToken Key。確認(rèn)模型 Base URL 是https://taotoken.net/api。本地 Python 環(huán)境裝好oracledb。Oracle 實(shí)例可連測(cè)試存儲(chǔ)過(guò)程已創(chuàng)建。如果要讓模型輔助排查準(zhǔn)備好模型對(duì)話(huà)或 Coding Plan 的入口。環(huán)境變量建議這樣設(shè)避免 Key 硬編碼在代碼里export TAOTOKEN_API_KEYsk-你的key export TAOTOKEN_BASE_URLhttps://taotoken.net/apiWindows 下用set或者系統(tǒng)環(huán)境變量界面設(shè)置。設(shè)完之后Python 里用os.environ.get(TAOTOKEN_API_KEY)讀取。模型側(cè)的最小驗(yàn)證可以用 curl 快速確認(rèn) Key 通不通curl https://taotoken.net/api/v1/models \ -H Authorization: Bearer $TAOTOKEN_API_KEY返回模型列表就說(shuō)明 Key 和 Base URL 都對(duì)。這一步不通后面模型輔助排查就別指望了。常見(jiàn)問(wèn)題是 Key 復(fù)制時(shí)帶了空格或者 Base URL 寫(xiě)成了帶 UTM 的地址。記住程序調(diào)用用https://taotoken.net/api不帶參數(shù)。數(shù)據(jù)庫(kù)側(cè)的前置確認(rèn)oracledb版本python -c import oracledb; print(oracledb.__version__)輸出類(lèi)似2.5.0就正常。如果報(bào)ModuleNotFoundError回去pip install oracledb。到這里模型通道和數(shù)據(jù)庫(kù)環(huán)境都準(zhǔn)備好了。下一節(jié)進(jìn)入可復(fù)制的配置片段包括連接池、綁定變量聲明、存儲(chǔ)過(guò)程調(diào)用。3. 可復(fù)制的連接池與存儲(chǔ)過(guò)程調(diào)用配置片段這一節(jié)是全文的核心給出可以直接復(fù)制運(yùn)行的代碼。我會(huì)把連接池配置、游標(biāo)變量聲明、存儲(chǔ)過(guò)程調(diào)用、結(jié)果讀取拆開(kāi)講每一段都標(biāo)清楚路徑和參數(shù)含義。先看連接池配置。用oracledb.create_pool()創(chuàng)建池參數(shù)含義如下import oracledb pool oracledb.create_pool( userdamao, passwordwoaiwojia, dsn192.168.3.169:1521/orclpdb1, min1, max4, increment1, )user和password是你的 Oracle 賬號(hào)。dsn是 EZConnect 格式host:port/service_name。min是池啟動(dòng)時(shí)的最小連接數(shù)max是最大連接數(shù)increment是每次擴(kuò)容增加的連接數(shù)。這幾個(gè)值按你實(shí)際并發(fā)調(diào)本地測(cè)試min1, max4足夠。如果你要用 SQLAlchemy可以這樣接from sqlalchemy import create_engine from sqlalchemy.pool import NullPool engine create_engine( oracleoracledb://, creatorpool.acquire, poolclassNullPool, )注意creatorpool.acquire是把池的獲取連接方法交給 SQLAlchemypoolclassNullPool是避免 SQLAlchemy 再套一層池。這個(gè)組合在需要復(fù)用 oracledb 池的場(chǎng)景下比較常見(jiàn)。接下來(lái)是調(diào)用存儲(chǔ)過(guò)程的關(guān)鍵部分。假設(shè)存儲(chǔ)過(guò)程簽名是test1(param1 IN VARCHAR2, param2 IN VARCHAR2, p_cursor OUT SYS_REFCURSOR)調(diào)用代碼如下connect pool.acquire() cursor connect.cursor() # 聲明游標(biāo)類(lèi)型的綁定變量 cursor_var cursor.var(oracledb.CURSOR) cursor.execute( begin test1(:param1, :param2, :p_cursor); end; , param1a1, param2a2, p_cursorcursor_var, ) # 迭代游標(biāo)變量拿結(jié)果 for row in cursor_var: print(row , row) cursor.close() connect.close() pool.close()這里有幾個(gè)點(diǎn)必須說(shuō)清楚第一cursor.var(oracledb.CURSOR)聲明的是游標(biāo)類(lèi)型綁定變量。oracledb.CURSOR是常量對(duì)應(yīng) Oracle 的SYS_REFCURSOR。不要寫(xiě)成oracledb.NUMBER或者oracledb.STRING類(lèi)型不對(duì)會(huì)報(bào)DPI-1010或者ORA-06550。第二匿名塊里用:p_cursor作為占位符執(zhí)行時(shí)通過(guò)關(guān)鍵字參數(shù)p_cursorcursor_var傳入。參數(shù)名要和占位符一致順序無(wú)所謂因?yàn)槭前疵纸壎ǖ?。第三?zhí)行完之后直接for row in cursor_var迭代。cursor_var本身是可迭代的每次迭代返回一行行是 tuple 或者命名元組取決于你的rowfactory設(shè)置。如果你需要拿到字段名可以這樣columns [d[0] for d in cursor_var.description] print(columns , columns) for row in cursor_var: print(dict(zip(columns, row)))cursor_var.description返回字段描述每個(gè)元素第一個(gè)是字段名。這樣就能把行映射成字典方便后續(xù)處理。如果你用的是 SQLAlchemy 的engine.connect()調(diào)用方式類(lèi)似但要注意連接是從 engine 拿的with engine.connect() as conn: raw conn.connection cur raw.cursor() cur_var cur.var(oracledb.CURSOR) cur.execute( begin test1(:p1, :p2, :pc); end;, p1a1, p2a2, pccur_var, ) for row in cur_var: print(row) cur.close()conn.connection拿到的是底層 oracledb 連接這樣才能用cursor.var()。SQLAlchemy 的text()包裝層不支持游標(biāo)綁定變量所以必須下沉到原生連接。關(guān)于參數(shù)類(lèi)型如果你的存儲(chǔ)過(guò)程入?yún)⑹菙?shù)字Python 側(cè)傳 int 或 float 就行oracledb 會(huì)自動(dòng)映射。如果是日期傳datetime.datetime對(duì)象。如果是 CLOB/BLOB需要額外聲明類(lèi)型這里不展開(kāi)。一個(gè)完整的可運(yùn)行腳本把上面拼起來(lái)import oracledb def main(): pool oracledb.create_pool( userdamao, passwordwoaiwojia, dsn192.168.3.169:1521/orclpdb1, min1, max4, increment1, ) connect pool.acquire() try: cursor connect.cursor() cursor_var cursor.var(oracledb.CURSOR) cursor.execute( begin test1(:param1, :param2, :p_cursor); end; , param1a1, param2a2, p_cursorcursor_var, ) columns [d[0] for d in cursor_var.description] print(columns , columns) for row in cursor_var: print(row , row) cursor.close() finally: connect.close() pool.close() if __name__ __main__: main()這個(gè)腳本直接跑能打印出字段名和兩行數(shù)據(jù)就說(shuō)明整條鏈路通了。如果你在配置模型輔助排查比如用 Cline 或 Claude Code需要寫(xiě)全三件套Base URL、Key、Model ID。以 Cline 的 MCP 配置為例JSON 片段如下{ mcpServers: { taotoken: { command: npx, args: [-y, taotoken/mcp-server], env: { TAOTOKEN_BASE_URL: https://taotoken.net/api, TAOTOKEN_API_KEY: sk-你的key, TAOTOKEN_MODEL: claude-3-5-sonnet } } } }這里TAOTOKEN_BASE_URL、TAOTOKEN_API_KEY、TAOTOKEN_MODEL就是三件套缺一不可。Model ID 按你實(shí)際可用的填控制臺(tái)里能查到。如果你用 Codex它的auth.json配置類(lèi)似{ base_url: https://taotoken.net/api, api_key: sk-你的key, model: claude-3-5-sonnet }路徑一般在~/.codex/auth.json或者項(xiàng)目根目錄的.codex/auth.json按你的 Codex 版本為準(zhǔn)。這些配置的作用是讓模型工具能通過(guò)統(tǒng)一通道調(diào)用跟 Oracle 調(diào)用是兩條獨(dú)立的線(xiàn)。你排查 Oracle 報(bào)錯(cuò)時(shí)可以把報(bào)錯(cuò)貼給模型讓它解釋。配置片段到這里。下一節(jié)講怎么驗(yàn)證請(qǐng)求成功、怎么確認(rèn) Cursor 返回正確。4. 驗(yàn)證請(qǐng)求與成功結(jié)果從執(zhí)行到字段映射配置寫(xiě)完之后必須驗(yàn)證。驗(yàn)證分兩層模型通道通不通數(shù)據(jù)庫(kù)調(diào)用通不通。先快速過(guò)模型通道再重點(diǎn)講數(shù)據(jù)庫(kù)。模型通道驗(yàn)證前面 curl 已經(jīng)給過(guò)。再補(bǔ)一個(gè) Python 版本import os import requests resp requests.get( https://taotoken.net/api/v1/models, headers{Authorization: fBearer {os.environ[TAOTOKEN_API_KEY]}}, timeout10, ) print(resp.status_code) print(resp.json())返回 200 和模型列表說(shuō)明 Key 和 Base URL 都對(duì)。如果 401檢查 Key如果連接超時(shí)檢查網(wǎng)絡(luò)。數(shù)據(jù)庫(kù)調(diào)用驗(yàn)證跑上一節(jié)的完整腳本。預(yù)期輸出columns [COL_A, COL_B] row (a1, a2) row (b1, b2)字段名是大寫(xiě)因?yàn)?Oracle 默認(rèn)把未加引號(hào)的標(biāo)識(shí)符轉(zhuǎn)大寫(xiě)。行是 tuple順序和description一致。如果你看到這個(gè)輸出說(shuō)明 Cursor 返回、字段映射、游標(biāo)迭代都正常。如果存儲(chǔ)過(guò)程返回的字段有別名比如SELECT col_a AS myCol那description里就是myCol大小寫(xiě)按你寫(xiě)的來(lái)。這點(diǎn)在做字段映射時(shí)要注意別硬編碼大寫(xiě)。驗(yàn)證字段映射可以加一段類(lèi)型檢查for d in cursor_var.description: print(name , d[0], type , d[1], size , d[3])d[1]是類(lèi)型碼d[3]是顯示大小。這樣你能確認(rèn)每個(gè)字段的類(lèi)型是否符合預(yù)期。比如VARCHAR2對(duì)應(yīng)oracledb.DB_TYPE_VARCHARNUMBER對(duì)應(yīng)oracledb.DB_TYPE_NUMBER。驗(yàn)證多行返回把存儲(chǔ)過(guò)程改成返回 100 行看迭代是否完整CREATE OR REPLACE PROCEDURE test_many( p_cursor OUT SYS_REFCURSOR ) AS BEGIN OPEN p_cursor FOR SELECT LEVEL AS n, row_ || LEVEL AS label FROM dual CONNECT BY LEVEL 100; END; /Python 側(cè)cursor_var cursor.var(oracledb.CURSOR) cursor.execute(begin test_many(:pc); end;, pccursor_var) count 0 for row in cursor_var: count 1 print(total rows , count)輸出total rows 100就說(shuō)明大結(jié)果集也能正常迭代。注意游標(biāo)是流式讀取的不會(huì)一次性把 100 行全加載到內(nèi)存這對(duì)大結(jié)果集友好。驗(yàn)證異常處理故意傳錯(cuò)參數(shù)類(lèi)型try: cursor.execute( begin test1(:p1, :p2, :pc); end;, p1123, # 故意傳數(shù)字存儲(chǔ)過(guò)程期望 VARCHAR2 p2a2, pccursor_var, ) except oracledb.DatabaseError as e: error, e.args print(code , error.code) print(message , error.message)預(yù)期捕獲到ORA-06502或者類(lèi)型轉(zhuǎn)換相關(guān)錯(cuò)誤。這樣你能確認(rèn)異常捕獲路徑是通的。驗(yàn)證連接池復(fù)用連續(xù)調(diào)用多次看連接是否正常歸還for i in range(5): conn pool.acquire() cur conn.cursor() cv cur.var(oracledb.CURSOR) cur.execute(begin test1(:p1, :p2, :pc); end;, p1a, p2b, pccv) rows list(cv) print(fround {i}, rows {len(rows)}) cur.close() conn.close()輸出 5 輪每輪 2 行說(shuō)明池的獲取和歸還正常。如果池耗盡會(huì)卡在pool.acquire()這時(shí)候檢查max是不是太小或者有沒(méi)有連接沒(méi)關(guān)。驗(yàn)證成功之后把結(jié)果和預(yù)期對(duì)照。我一般會(huì)寫(xiě)一個(gè)簡(jiǎn)單的斷言assert columns [COL_A, COL_B] assert len(rows) 2 assert rows[0] (a1, a2)斷言通過(guò)整條鏈路就算驗(yàn)證完畢。這里再提一下模型輔助驗(yàn)證的用法。如果你在驗(yàn)證過(guò)程中遇到報(bào)錯(cuò)可以把報(bào)錯(cuò)和你的代碼片段一起貼到模型對(duì)話(huà)里讓它幫你定位。比如貼DPI-1010: invalid binding type模型會(huì)告訴你綁定變量類(lèi)型聲明錯(cuò)了。這種用法比你自己翻文檔快。驗(yàn)證階段常見(jiàn)的結(jié)果異常輸出columns []說(shuō)明游標(biāo)沒(méi)打開(kāi)存儲(chǔ)過(guò)程可能沒(méi)執(zhí)行到OPEN檢查過(guò)程邏輯。輸出行數(shù)不對(duì)檢查存儲(chǔ)過(guò)程的WHERE條件或者綁定變量是否傳對(duì)。字段名亂碼檢查數(shù)據(jù)庫(kù)字符集和客戶(hù)端字符集是否一致。迭代時(shí)報(bào)DPI-1067游標(biāo)已經(jīng)被關(guān)閉或者被消費(fèi)過(guò)檢查是否重復(fù)迭代。下一節(jié)專(zhuān)門(mén)講這些報(bào)錯(cuò)的排查。5. 本篇常見(jiàn)報(bào)錯(cuò)排查401、DPI-1010、ORA-01036 與游標(biāo)讀取異常這一節(jié)按真實(shí)報(bào)錯(cuò)來(lái)對(duì)照給出原因和修復(fù)動(dòng)作。我把最常見(jiàn)的幾類(lèi)列出來(lái)你遇到哪個(gè)查哪個(gè)。401 Unauthorized模型通道報(bào)錯(cuò)原文{error: {message: Invalid API key, type: invalid_request_error}}原因TaoToken Key 不對(duì)或者請(qǐng)求頭沒(méi)帶對(duì)。檢查Authorization: Bearer sk-xxx格式Key 前后有沒(méi)有空格。Base URL 必須是https://taotoken.net/api不要帶 UTM 參數(shù)。如果 Key 剛創(chuàng)建等幾秒再試。修復(fù)echo $TAOTOKEN_API_KEY curl https://taotoken.net/api/v1/models -H Authorization: Bearer $TAOTOKEN_API_KEYlocal proxy failed模型通道報(bào)錯(cuò)原文local proxy failed: dial tcp 127.0.0.1:7890: connect: connection refused原因本地配了代理但代理沒(méi)啟動(dòng)或者代理端口不對(duì)。這個(gè)報(bào)錯(cuò)跟 TaoToken 無(wú)關(guān)是你本地網(wǎng)絡(luò)配置的問(wèn)題。檢查環(huán)境變量HTTP_PROXY、HTTPS_PROXY或者工具自己的代理設(shè)置。修復(fù)關(guān)掉代理或者把代理指向正確的端口。如果你不需要代理直接 unsetunset HTTP_PROXY unset HTTPS_PROXYDPI-1010: invalid binding type報(bào)錯(cuò)原文oracledb.exceptions.DatabaseError: DPI-1010: invalid binding type原因綁定變量類(lèi)型聲明錯(cuò)了。最常見(jiàn)的是把游標(biāo)變量聲明成了oracledb.NUMBER或oracledb.STRING。存儲(chǔ)過(guò)程的OUT SYS_REFCURSOR必須用cursor.var(oracledb.CURSOR)。修復(fù)# 錯(cuò)誤 cursor_var cursor.var(oracledb.NUMBER) # 正確 cursor_var cursor.var(oracledb.CURSOR)ORA-01036: illegal variable name/number報(bào)錯(cuò)原文oracledb.exceptions.DatabaseError: ORA-01036: illegal variable name/number原因占位符和傳入?yún)?shù)不匹配。比如匿名塊里寫(xiě)了:p_cursor但執(zhí)行時(shí)傳的是cursorcursor_var名字對(duì)不上?;蛘哒嘉环麛?shù)量不對(duì)。修復(fù)占位符名字和執(zhí)行參數(shù)名嚴(yán)格一致。# 錯(cuò)誤 cursor.execute(begin test1(:p1, :p2, :pc); end;, param1a, param2b, cursorcursor_var) # 正確 cursor.execute(begin test1(:p1, :p2, :pc); end;, p1a, p2b, pccursor_var)ORA-06550: PLS-00306: wrong number or types of arguments報(bào)錯(cuò)原文oracledb.exceptions.DatabaseError: ORA-06550: line 1, column 7: PLS-00306: wrong number or types of arguments in call to TEST1原因調(diào)用存儲(chǔ)過(guò)程時(shí)參數(shù)個(gè)數(shù)或類(lèi)型不對(duì)。檢查存儲(chǔ)過(guò)程簽名確認(rèn)入?yún)⒑统鰠?shù)量、類(lèi)型匹配。比如過(guò)程需要 3 個(gè)參數(shù)你只傳了 2 個(gè)。修復(fù)對(duì)照DESC test1的輸出逐個(gè)核對(duì)參數(shù)。DESC test1;ORA-12514: TNS:listener does not currently know of service報(bào)錯(cuò)原文oracledb.exceptions.DatabaseError: ORA-12514: TNS:listener does not currently know of service requested in connect descriptor原因dsn里的 service name 寫(xiě)錯(cuò)了。192.168.3.169:1521/orclpdb1里的orclpdb1必須是數(shù)據(jù)庫(kù)實(shí)際注冊(cè)的 service name。修復(fù)在數(shù)據(jù)庫(kù)服務(wù)器上查SELECT name FROM v$services;用查到的 service name 替換。reading choices 相關(guān)報(bào)錯(cuò)模型通道報(bào)錯(cuò)原文Error reading choices: unexpected end of JSON input原因模型返回的響應(yīng)不完整通常是網(wǎng)絡(luò)中斷或者超時(shí)。也可能是 Base URL 配錯(cuò)返回了非 JSON 內(nèi)容。修復(fù)檢查 Base URL 是否為https://taotoken.net/api加大超時(shí)時(shí)間重試。如果持續(xù)出現(xiàn)換個(gè)模型試試。OAuth 相關(guān)報(bào)錯(cuò)Claude Code 接入報(bào)錯(cuò)原文OAuth token expired or invalid原因Claude Code 的鑒權(quán)過(guò)期。如果你是通過(guò)統(tǒng)一通道接入檢查配置里的 Key 是否還有效。修復(fù)重新生成 Key更新配置。Claude Code 的接入配置參考前面給的鏈接確認(rèn) Base URL、Key、Model ID 三件套都填對(duì)。游標(biāo)讀取異常DPI-1067報(bào)錯(cuò)原文oracledb.exceptions.InterfaceError: DPI-1067: the cursor has already been closed原因游標(biāo)被重復(fù)迭代或者提前關(guān)閉。比如你先list(cursor_var)消費(fèi)了一遍又for row in cursor_var再消費(fèi)一遍第二次就報(bào)這個(gè)。修復(fù)游標(biāo)只能消費(fèi)一次。需要多次使用就先轉(zhuǎn)成 listrows list(cursor_var) for row in rows: print(row) for row in rows: print(row) # 這樣沒(méi)問(wèn)題游標(biāo)讀取異常結(jié)果為空但沒(méi)報(bào)錯(cuò)現(xiàn)象for row in cursor_var一行都不輸出也不報(bào)錯(cuò)。原因存儲(chǔ)過(guò)程里的OPEN沒(méi)執(zhí)行到或者WHERE條件過(guò)濾掉了所有行。也可能是游標(biāo)變量聲明了但沒(méi)傳進(jìn)過(guò)程。修復(fù)先在 SQL Developer 里直接跑存儲(chǔ)過(guò)程確認(rèn)有數(shù)據(jù)返回。再檢查 Python 側(cè)的綁定變量是否傳對(duì)。連接池耗盡現(xiàn)象程序卡在pool.acquire()不返回。原因連接沒(méi)歸還池的max太小或者有連接泄漏。修復(fù)確保每次pool.acquire()之后都有connect.close()。用try/finally保證歸還。臨時(shí)加大max看是否緩解。connect pool.acquire() try: # 你的操作 pass finally: connect.close()字段名大小寫(xiě)不一致現(xiàn)象columns里是大寫(xiě)但你代碼里按小寫(xiě)取取不到。原因Oracle 默認(rèn)大寫(xiě)標(biāo)識(shí)符。修復(fù)統(tǒng)一用大寫(xiě)或者建表/查詢(xún)時(shí)用雙引號(hào)指定大小寫(xiě)。映射時(shí)用dict(zip(columns, row))按實(shí)際字段名取。row_dict dict(zip(columns, row)) print(row_dict[COL_A])這些報(bào)錯(cuò)覆蓋了大部分場(chǎng)景。遇到?jīng)]列出來(lái)的把報(bào)錯(cuò)原文貼到模型對(duì)話(huà)里讓它幫你分析。模型對(duì)話(huà)入口前面給過(guò)這里再放一次方便你復(fù)制https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_contentmodel_chatutm_campaignrewrite 。排查的時(shí)候有個(gè)原則先確認(rèn)是模型通道的問(wèn)題還是數(shù)據(jù)庫(kù)的問(wèn)題。模型通道的報(bào)錯(cuò)通常是 401、超時(shí)、JSON 解析失敗數(shù)據(jù)庫(kù)的報(bào)錯(cuò)通常是 ORA-、DPI- 開(kāi)頭。分開(kāi)定位效率高很多。6. 統(tǒng)一 Key 通道下的接入與驗(yàn)證入口走到這里整條鏈路應(yīng)該已經(jīng)跑通了。回顧一下關(guān)鍵動(dòng)作連接池配置用oracledb.create_pool()游標(biāo)變量用cursor.var(oracledb.CURSOR)聲明存儲(chǔ)過(guò)程用匿名塊調(diào)用結(jié)果直接迭代游標(biāo)變量。字段映射靠cursor_var.description異常捕獲用oracledb.DatabaseError。如果你還需要把這套流程固化到項(xiàng)目里建議把連接池做成單例避免每次調(diào)用都重建。Key 和連接串走環(huán)境變量不要硬編碼。存儲(chǔ)過(guò)程調(diào)用封裝成函數(shù)入?yún)⒑统鰠⒚鞔_。模型側(cè)的統(tǒng)一通道Key 管理在控制臺(tái)接入文檔在文檔頁(yè)。需要新建 Key 就去 API Keys 頁(yè)面。長(zhǎng)期編碼場(chǎng)景用 Coding Plan快速問(wèn)報(bào)錯(cuò)用模型對(duì)話(huà)。這幾個(gè)入口按你的實(shí)際需求選不用全用。最后給一個(gè)實(shí)用技巧把存儲(chǔ)過(guò)程的調(diào)用和模型排查串起來(lái)。寫(xiě)一個(gè)腳本捕獲到oracledb.DatabaseError時(shí)自動(dòng)把報(bào)錯(cuò)和 SQL 片段發(fā)給模型讓它返回可能的原因。這樣排查效率會(huì)高很多。模型調(diào)用走統(tǒng)一通道Base URL 和 Key 配一次就行。如果你在接入過(guò)程中卡住優(yōu)先檢查三件套Base URL 是不是https://taotoken.net/apiKey 是不是有效Model ID 是不是可用。這三個(gè)對(duì)了模型通道就通。數(shù)據(jù)庫(kù)側(cè)檢查連接串、綁定變量類(lèi)型、存儲(chǔ)過(guò)程簽名。兩邊分開(kāi)查問(wèn)題很快能定位。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
超碰人人超在线观看| 日韩av色图| 国产黑白丝在线| 久草新在线| 婷婷天堂站| 性色avv| 一二区在线观看视频| 免费精品国偷自产在线在线| 亚洲美女精品| 久久区| 亚洲成人久久美女| 青操影院| 中文字幕五月婷婷免费| 国产suv精品一区二区四区999| 人妻另类| 在线观看岛国有码| 欧美在线大香蕉| 蜜乳AV免费观看| 中日高清无码操逼视频| 狠狠夜色午夜久久综合在线| 黑人白女精品一区| 亚洲资源网| 久久青青草原免费视频| 美女AV一区二区| 日韩成年人性爱视频| 久久乐| 日韩综合97p| 亚洲天堂7777| 中文字幕、久久精品国产2020、久久综合久久自在自线精品自、亚洲 | 十八禁电影伊人网| 99综合视频一体| 欧美少妇高潮视频| 九九RE视频在线精品| 碰人碰碰人人开房人肉| 丁香六月婷婷久久综合| 久久精品操| 九九RE视频在线精品| 超碰97极品9| 91足交| 91久久久久| 日本99热| 精品无码欧美三级| 亚洲91网站| 夜夜天天噜狠狠爱2021| 天美久久久久| 色九九九九久| 亚洲国产另类在线中文| 北条麻妃性愛视频| AV免费在线播放一区| …中文字幕亚洲乱,97人妻无码费视…| 国产av波波国产精品| 亚洲在高跟鞋自慰久久在色线| 伦激情人妻另类人妻| 蜜臀久久久| 黄色大香焦1级‘′‘| 亚洲精品白丝| 久草五月| 一区二区三区免费岛国片| 9997se| 天天干天天插| 亚洲在线网站| 欧美综合色综合| 天天爽天天操| 亚洲国产成人精品无码专区| 亚洲欧美在线丝袜| 和协无码影院| HEYZO高无码国产精品227| 一本色道人妻久久| 极品粉嫩少妇视频| 亚洲无码一区二区三区三州| 91亚州| 999九九精品| 婷婷五月天激情网| 日韩熟女无码| 亚洲成人贴图| 老司机福利社视频在线观看| 日本天堂网| 国产精品无码av| 这里只有97精品| 日本不卡高清免v欧美日韩在线观看| 377p欧洲日本亚洲大胆| 精品九区| 青青草日韩免费观看高清在线| 国产成人综合网| 一本久道在线综合视频| 啊啊啊啊好爽好舒服一区二区易域| 一区二区 电影 亚洲| 国产伦精品一区二区三区在线观| 午夜激情成人在线观看| 天天干18禁| 老女人碰碰在线碰碰视频| 色色色色综合网| 日本操逼aaaaa| 亚洲好色人妻| 人妻无码久久一区二区三区免费| 在线 制服丝袜中出 人妻| 一个国产在线综合网站| 欧综合网| 女人18精品一区二区三区| 一区二区 日韩 欧美 国产 传媒| 久久婷婷亚洲| 天天日天天搞天天干| 欧美日韩制服| 天天操熟妇| 精品.99999| 色综合色欲色综合色综合色综合| 国产成人99久久亚洲综合| 欧美一级二级三级| 超碰综合97在线| 国产乱弄免费在线视频。| 欧美国产日韩高清在线| 成人午夜小视频手机在线看| 国产AV色黄看到爽| 成人五月天丁香激情综合| 9ⅰ久久久天天| 欧美亚洲美少妇一区二区| 色婷婷aV一区二区三区麻豆综合| 天天摸天天插天天日| 亚洲色啪| 丁香五月性| 午夜啪啪片| 草草影院最新网址| 亚洲精品一区二区精品| 亚洲 无码 偷拍| 天美传媒精品一区二区| 春色91| 黄色一区三区| 91视频女生| 97在线观视频免费观看| 精品一久久久| 色偷偷色偷偷欧美日韩| 亚洲美欧999| 蜜奶av| 日韩另类色图| 一区二区首页| 97色色国产视频| 国产精品操| 91精品久久久久久| 九九九九国产| 秋霞午夜成人福利片片| 精品欧美不卡在线播放| 国产无码精品无码| 91精品无码久久久久久久| 加勒比伊人| 人妻三级在线中文字幕| 97超碰人人操人人操| 国产精品内射婷婷一级二| 丝袜美腿av女优在线| 超碰97中文| 日语五十路和六十路亚洲国产精品| 嗯嗯啊啊操我| 欧美成人一级麻豆| 岛国片在线视频网站| 欧美激情视频在线一区| 国产精品第一区第一页| 亚洲国产婷婷在线播放| 国产av美女被艹的乱叫| 老色69| 欧美久久婷| 久久只有精品一区二区三区| 婷婷九月国产| 酒色综合网| 色吧5亚洲| 强奸乱伦免费网站| 天天日B夜夜干B时时操B| 色久桃花影院在线观看| 思思热免费视频观看| 激情五月天色色网| 97色冈| 国产精品密臀网在线观看| 日本天堂网| 色大香蕉97N| 久热这里| 精品欧美老熟女一二区| 黄色AAAAA欧美| 97干在线| 蜜臀亚洲中文| 蜜臀99久| 老熟女乱伦一区| 强奸乱伦亚洲第一页| 久久九九网| 免费看污网站| 国产精品农村妇女精品| 自拍内地三级在线观看| 九九久久精品| 91熟女综合| 91色插| 综合欧美亚洲| 在线无码操| 天天欧美色| 亚洲五区熟女| 中欧人妻丝袜中文字幕| 久久亚洲AV无码专区国产精品 | 怡红院亚洲怡春院av| 亚洲欧美国产精品久久久久久久| 久操com| 国产av高清版| 伊人久久大香线蕉无码| 色婷婷电影| 一级黄碟在线看| 日韩91网| 亚洲精品官网在线观看| 美女的肌被草喷水视频| 欧美高清16| 无码丰满熟妇一区二区浪潮AV| 色色婷婷五月| 狠操91,com| 91亚洲黄色网| 国产成人精品无码久久| 夜夜操91744565| 青久久| 999久久久免费精品国产牛牛| 97精品综合久久| 中文字幕久久精视频久久大全| 一区二区三区一亚洲中文字幕、综合区灬| 欧美亚洲自拍另类人妻| 啊啊啊com| 99在线观看视频在线高清| 欧美激情性久久久久久| 久久久久久AⅤ无码免费肉站| 黄色AAAAA欧美| 综合 青草 伊久久 影院 综合| 玖玖爱视频网站| 欧美综合娱乐久久| 啊啊啊啊啊啊啊啊啊啊在线观看| 久久的免费性爱视频| 久久xxxx| 久久精品无码专区| 国产性爱在线视频一区二区| 欧美日韩夜夜| 欧美亚洲| 精品免费1| 亚洲综合首页| 天天影视网综合少妇| 色区97| 国产综合操逼高清| 午夜福利 成人 91| 黑人精品成人一区二区三区| 97在线观看免费| 成人乱码一区二区三少妇| 99RE在线视频精品,这里只有精品| 蜜臀在线视频| 青娱乐 成人娱乐在线| 精品国产乱码久久久影院| 亚洲操逼无码| 极品久久久久久久久久久久久久| 五月亭亭六月丁香| 国产这里只有精品| 午夜精品久久99蜜桃的功能章节| 亚洲AV无码天美传媒一区| 欧美亚洲丝袜人妻制服中文99| 色999;丁香五月| 97精品视频在线播放| 蜜桃av综合网发布| 国产精品久久泡妞网站| 天天日少妇逼AV| 国产精品久久久久9999小说| 日本免费中文一区二区三区四区 | 青青草国产一区二区三区| 久久久久久国产无码精品| 人妻激情在线视频| 国产情侣自拍在线播放| 无卡一区=区| 囯产乱伦一区二区三女| 国产情色第一第二页在线观看| 色欲Av人妻精品一区二| 五月激情在线| 中文字幕高清精品一区| 亚洲乱色视频一区、二区在线| 加勒比aⅴ| 2011国产精品| 操婢日韩| 精品一区二区2| 九九碰九九爱97| 久久久久久人体| 亚洲91射| 激情久久久| 肏逼视频日本| 东京热不卡视频| 无码国产精品午夜不卡(| 亚熟hd视频在线| 国产精品无码av| 夜夜高潮夜夜爽夜夜爱爱一区| 色婷婷激情| 亚洲精品久久久久久久蜜桃臀| 无码色| 岛国爱情动作片在国产AV无码专区亚洲AV漫画| 91av天美性媒精品视频| 亚洲日韩精品在线播放| 青娱乐淫乱1314| 99热在线不卡| 天天天天干| 免费成人自拍视频在线| 久久精品一区二区三区蜜桃臀| 国产 日韩 欧美 中文 另类,国产 欧美 另类 制服 变态,高清 日韩 欧美 中文,高 | 欧美αv.com| 狠狠爱夜夜| 国产偷仑| 国产精品一区二区三区在线密挑| 78精品在线| · —级AA伦aa坐爱午夜极速ⅴA一区天天噪天天噪天天噪 | 免费a在线播放v| 日韩啪啪视频| 性性久久| 97爱欧美| 丰满翘臀美女影院视频| 国产精品熟女乱伦| 国产精品com| 中文字幕无码不卡啪啪| 午夜综合在线| 国产乱弄免费在线视频。 | 色诱avtt| 爽爽爽免费视频| 国产AV激情无码久久无码| 久久夜夜| 一起草在线视频| 国产农村妇女毛片精品久久| 黄色片G G G| 精品九九九九九九九| 97免费在线视频在线观看| 久久 国产精品 一区| 伊人AAA| 蜜臀色乳| 亚洲精品蜜桃久久久久久久| 色盈盈影院| 精品国产一区二区三区av在线资源| 边做饭边操逼逼| A级片日韩欧美国产欧美视频精选观看 | 日韩免费三级黄片电影| 超碰九区| Sekablack无码一区| 97操B| 国产美女91| 欧美亚洲首页| 国产无码久久高清| 水滴偷拍| 在线观看视频91| 亚州综合电影| 男人的天堂日本东京热| 屁股久久久久久久久| 欧美极品少妇| 91爱看| 人妻少妇无码| 99久久久无码国产精品性啊聊| 亚洲毛片久久| 91视频综合网| 午夜精品五区| 91粉芽高清在线一区二区| 超碰激情808| 中文字幕神马久久| 好爽视频在线观看视频 | 91精品大奶人妻| 国产AV高清AV无码| 1024久久高清视频| 综合网亚洲1| 日日嗷| 一级性爱视频免费在线| 一区三区啪啪| 欧美性爱一区二区三区四区| 亚洲风情在线观看| 第四色奇米影视777| 色五月综合| 自拍视频大全亚洲专媒视频/一区二区三区| 大香蕉男人的天堂| 偷拍精品一区二区三区| av国产无码| 少妇同性| 69视频入口| 国产视频不卡在线观看| 欧美A√综合网| 色悠久| 国产99热| 欧美日韩久久精品爱爱| 人人操人人操草草| 九99久久| 国产一级特黄大片处女| 997色在线| 偷拍偷窥与盗摄视频专区| 久久一二三级一一一| 91美女視頻| 亚洲天天在线| 好吊妞转入那个网| 成人一二三区| 99热官网| 无码粉嫩白虎一线天b区| 亚洲熟伦熟妇AV无码春色| 天天做天天爱| 九九热国产| 九九热在线精品视频| 欧美色图20P| 久久久97| 白丝一区| 中文字幕精品丝袜| 国产精品麻豆免费视频| 欧洲精品一区二区三区| 韩日性爱av| 夜精品久无码| 日韩乱伦AⅤ| 嗯嗯啊啊好疼| 久久久免费一级黄片| 久久久内射良家| 日韩激情中文字幕有码| 99re98| 91蜜臀熟女| 99久久国产精品免费高潮| 欧美熟妇精品黑人巨大一二三区| 黄色成年| 伊人国产视频| 日韩中文字幕视频在线观看| 欧美99999| 婷婷香网站| 亚洲性爱无码乱伦av| 久久国产精品熟女人妻| 91超级碰| ji熟女.com| 91日韩网站| 人人喜人人妻| 亚洲图片欧美制度| 男人的天堂2018东京热啪啪啪| 熟妇熟女亚洲天堂网| 男女日B国产| 国产精品久久久久久久免牛肉蒲团 | 台湾佬中文娱乐网久久久久久久久久com | 九月激情婷婷| 性91| 超碰97人人乐| 欧美中字二区| 无码人妻一区二区一牛影视| 中文字幕交换人妻| 热99这里有精品综合久久 | 精品亚洲一区在线观看| 国产麻豆一区二三区| 综合色图区| 久久鲁干| 韩国一级婬片A片无码天美| 97网站在线观看 | 一级AV性爱| 亚洲精品国产拍免费91在线| 国产女人9999| 亚av顶级裸体一区二区三区四区五区 | 国产无马av| 免费精品中文字幕| 另类TS人妖一区二区三区| 啊啊啊水好多| 精品人妻一区二区蜜桃视频| 精品国产久久乱码| 91精品国产乱码| 蜜臀久久99精品久久久久免费观| 麻豆天美国美国产| 亚洲熟妇极品| 色呦呦、国产精品| 久久久9视频| 中文高清一区二区的| 口爆综合网| 人妻嗯啊啊在线播放| 色婷五月| 久久久久久久久九九久孕交| 亚洲美腿丝袜香蕉影视欧美成人| 操操逼操操逼操操逼逼| 亚洲一区二区av| 久草精品在线| 探花精品 一区二区| 欧美色就是色| av一区二区三区不卡| 欧美性爱18观看| 国产高清精品一区二区三区毛片| 久久av一级av少妇av高潮| 蜜乳av一区二区| 13小男生GAY自慰脱裤子| 1769成人国产精品视频| 性暴力欧美猛交在线直播| 黄色片一区二区三区四区五区| 色在线综合| 美女极品一区二区三区| 激情综合久久| 大胆91| 欧美夜色| 日本精品加勒比海一区| 亚洲 暴爽 AV人人爽日日碰| 性爱视频无打码在线观看| 青娱乐国产盛宴视频| 日本在线不卡一二区| 国产视频三区四区| yirendaxiangjiashipin| 色超碰综合| 东北女人高潮视频| 中文字幕精品日韩中文字幕| 国产粉嫩出水在线播放| 少妇一区二区三区在线观看| 伊人久久亚洲色欲综合网站| 色吧5亚洲| 日本123区操B视频| 白 大 人妻 区 在线| 国产精品亚洲日韩骚欢乐谷最新地址发布页huanieguty性屋娱乐妖精视频 | 91久久精品国产| 91色s| 国产精品日本无码A片| 天天色综合天天操| 精品无码一二三四区| 国产成人一级av88| 97久久精品亚洲| 午夜高清成人在线视频| www.婷婷| 91色人| 亚洲福利影院一区久久| 一区在线观看中文字幕| 久久亚州高清| 亚洲精品欧洲色| 92性色国产午夜福利在线661| 久热伊人| 神马麻豆福利院| 超碰人人在线| 五月天久久人妻| 婷婷亚洲五月***久久| 免费成人在线熟妇网| 欧美色图综合| 六九九九| 超碰97人妻在线| 亚洲人人操| 中文字幕一品色图| 亚洲成人性爱网站在线播放| 一区二区三区日韩欧美 | 国产人妻精品一区二区三区秋霞 | 人妻熟女一区二区在线视频| 十八禁视频一区二区| 打av高清| 亚洲最大成人a毛毛片| 不卡在线一区,精品一区二区三区中| 老鸭窝成人| 丁香五月电影| 久久精品一区二区| 欧美97日韩| 日日操免费视频| 色婷婷一区二区三区久久午夜 | 亚洲 小说 欧美 激情 另类| 欧亚不卡| 男男H黄动漫啪啪无遮挡网站| 亚洲交换| 99视频这有这里有精品| 大香蕉 222| 亚洲 国产 精品一区| 裸体女人草逼视频播放一区,二区,三区,四区,五区 | 日韩小电影| 久久九九网| 女性91网站| 中文字幕十五区| 欧美人人AAA| V A在线| 97操在线| 美女露胸露屁股| 乳欲人妻办公室奶水| 国产999精品久久久| 91超碰人人| 国产成人免费观看在线视频| 九九超碰综合网| 超碰国产情侣自拍网| 多乙久久久久久| 五月天婷婷在线看| 中国AV美女| 95精品在线| 久超碰这里只有精品| 粉嫩国产精品久久久| www.婷婷| 翘臀vidoes| 五月色网| 25国产精品免费观看| 国产成人精品日本亚洲语言| 天天干人妇| 日本肉体xxxx裸交| 69精品久久久久中文字幕| 青娱乐久久艹| 久久这里只精品99re66图| 日韩中文字幕在线视频观看| 五月丁香婷婷综合网| 最新日韩黄片| 亚洲精品美女久久久久久久久| 亚洲熟女av日韩熟女| 久久99午夜精品一区人妻| 日本精品高清一二区一本到| 色婷久久| 久久综合婷婷| juliaann精品熟女一区| 激情一区二区三区在线观看| 人妻精品综合中文字幕在线| 美女裸体麻豆天美蜜桃91| 日韩99神马视频播放| 97AV在线免费观看| 久艹视频在线| 久久丝袜| 伊人网青青| 亚洲中文一区二区三区| 欧美婷婷五月天| 日本人体九九九九九九| 手机不卡视频不卡在线一二三区| 中国小夫妻勾搭露脸淫荡对白| 亚州熟妇精品| 99re视频在线播放青草| 操国产逼| 欧美日韩在线国产在线| 一区二区三区日韩欧美| 一区二区视频你懂的| 91oumei| 激情五月天综合网| 亚州色站 日韩电影| 男人天堂无码| 青青草中文-久久青草精品一区二区三| 亚洲一区二区麻豆影院| 97国产天堂岛| 中文字幕色AV| 日韩性爱小视频| 性久久| 大香蕉九九| 亚洲欧洲无码97久久精品| 一区二区亚州激情久婷婷欧美| 熟妇女伦乱视频| 美女诱惑久久| 999亚洲国产视频| 男人的天堂亚洲| 亚洲欧洲日产国产综合网| 欧美色老汉| 国产强奸乱伦xd| 久久五月综合| 熟妇国产免费一区| 丁香九月婷婷| 日韩黄色一区二区三区| 国产suv精品一区二区四区999| 精品人妻一二三四区视频| 久 久无码人妻AV| 国产一区二区三区导航| 日本亚洲vr欧美不卡高清专区| ...日韩成人一区二区三区字幕| 啊啊啊好想要| 欧美特大黄一级片片免费| 91人妻丝袜无码| 婷婷8月天青娱乐| av在线播放国产一区| 激情五月婷婷| 老女人老91妇女老热女| 亚洲中文字幕在现观看| 午夜色婷婷| 少妇色综合| 久久草草亚洲蜜桃臀| 久久伊人大香蕉| 超碰午夜| 国产操伦| 超碰日本97美女人妻人人玩人人爱| 日本五区不卡| 韩日性爱av| 亚洲不卡av在线| 久久内射| www.99视频| 五十路人妻在线| 6080YYY午夜理论片在线观看| 精品国产乱码久久久久久久久1 | 嗯阿好爽好紧| 青青草久草| 亚洲图片偷拍视频区| 啊啊啊好舒服视频在线观看| 成人无码在线超碰网| 淫淫总合网| 97国产精品一区| 91粉嫩萝控精品福利网站_精品影音先锋国 | 国产日本久久免费精品| 欧美亚洲se91| 亚洲一曲日韩精品| 亚洲色图国产另类| 亚洲国产欧美一区二区潘金莲 | 精品国产72| 欧美大波激情xxxx| 久久水蜜臀亚洲AV无码精品| 91老司机在线| 天天添天天干电影| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师黑人潮喷一 | 日本黄色精品专区网站| 丁香五月婷婷基地| 992大香蕉| 91色色色| 麻豆一区二区三区在线看 | 宅男午夜在线视频| 国内亚洲高清无码| 天天爽夜夜欢视| 少妇人妻在线| 色综合色欲色综合色综合色综合| 亚洲一本色码中文字幕| 操www| 日本 成 人 小说 电影 一区二区| 国产麻豆一区二三区| 日韩欧美成人性爱在线| 嗯嗯啊好大| 国语国产操逼伊人AV网| 免费国产| 蜜乳av首页| 猛猛干| AV天堂丝袜| 国产精品美女久久久久久网站| 国产大片精久久久久久| 久久久久亚洲AV无码专区少妇| 美日韩在线不卡人妻| 亚洲精品影视老司机| 黄页网站成人免费| 香蕉婷婷| 老司机午夜精品视频| 久久久久久91香蕉国产| 国产精品视频内谢女人| 99九九久久| 国产精品分类在线观看| 欧美综合 站| 欧美很很操视频| 特污精品女优骚货黄色视频在线免费观看| Av色五月| 久久青青草原免费视频| 一级黄碟| 天天添天天干电影| 久久啊啊| 成人色女网| 国产极品一区二区三区三州| 超碰人妻久久| 中文字幕乱碼在线| 久久久久久久亚洲Av无码| 蜜臀久久99精品久久久久电影| 欧美一级三级| 欧美色视频在线| 欧美色图欧美| 人妻插插人妻人| 欧美国产伊人久久久久| 欧美性天天| 九九九九九九九九九五码| 亚洲AV无码国产精品久久久久 | 男人天堂 天天射| 丁香五月成人| 影音先锋视频在线| 亚洲中文字幕熟女少妇一区二区| 九九成人精品| 秋霞视频一区二区| 人妻献身系列第54部| 9997se| 久久9 9 9精品| 人妻精品视频一区二区| 极品销魂美女一区二区| 91老熟女老女人国产老太| 天天色粽合合合合合合合| 操婢日韩| 免费视频97| 亚洲欧美日韩电影网站一区| 97操操| caoni国产亚洲av| 国产精品人妻无码久久久互動交流 | 秋霞Av理论一级在线| 97免费视频网| 色五月婷婷麻豆在| 人人操,操人人| 国产午夜精品理论片a大结局| 国产后入清纯| 亚洲欧美setu| 亚洲国产一区二区三区在线| 久久久网站| 强奸乱伦大香蕉| 久久永久无码人妻视频| 欧美丝袜中文字幕07在线| 在线情色电影 91大| 国产日韩精品一区二区三区| 黄网在线播放| 亚洲国产午夜真人一级片中文字幕精品黄网站 | 国产区在线| 伊人991| 热天堂一区二区| 日韩啪啪啪啪啪| 国产无马av| 精品中文字幕一区二区l - 百度| 91丨九色丨国产丨人妻在线| 日韩在线观看三级电影| 亚洲日本天堂| 久久蜜色情在线视频xxx免费观看| 超碰超碰欧美| AA丁香综合激情| 熟女六十路| 日韩精品亚洲专区在线影视| 国产最新小视频在线播放下载 | 亚洲三级网址久久最新| 男人天堂2012| 丁香五月激情综合| 中文字幕jul-617人妻熟女| 国产日韩欧美亚洲精品95 | 农村妇女精品一二区| 五月天婷婷社区| 美女黄页网站| 日韩专区数据列表-第3230页-精品国产一区二区三区香蕉 久久99熟女人妻中文字 | 日韩欧美成人性爱在线| 日韩熟女无码| 国产午夜福利电影免费在线观看| 亚洲?V高清一区二区三区尤物| 日韩国产九九精品一区二区三区毛片| 色制服丝袜夫妻av一区| 天堂伊人久久| 嗯嗯啊啊视频一区二区三区| 青青操少妇| 超碰97色色| 日本91白丝| 亚洲精品日日夜夜52| 天天日天天干天天整| 九月丁香综合网| 玖玖爱免费观看视频| 日本欧美韩国国产在线| 亚洲啪AⅤ永久无码| 亚欧高清| 操逼免费视频无码国产| 一级乱伦网站| 亚洲国产综合图区中文字幕| 亚洲?V高清一区二区三区尤物| 国产精品美女视频诱惑| 在线免费观看高清无码视频| 欧美影院一区二区三区| 天天干天天舔| 日本成人A片免费看| 一级黄色视频网| 日本性爱少妇| 一区二区日韩欧美久久| 日夜啪电影| 亚洲精品久久久久久久久豆丁网| 青青草黑寡妇男人天堂| 狠狠色一区二区中文字幕| 欧美成人色| 久久AV色| 天天欧美| 欧美一级A一级a爱片久久| 91欧美网| 五月丁香六月综合缴清无码| 日本操大逼| 欧美日韩99| 成人贴图日韩欧美| 丁香五月性| 嗯阿好爽好紧| 91色综合色| 欧美亚洲首页| 久久黄片国产一区二区| 亚洲高潮影院| 日韩乱码Av| 麻豆影音天美视频| 久久日本熟女精品一区| 天天色怡春院| 天天影视91看看| 久久婷婷色综合一区二区三区| 亚洲男人天堂手机版| 天天噜| 日逼逼免费看| 激情99| 天天天乱色综合全| 乱操9999| 男人综合网| 国产精品久久久久久亚洲色欲| 2020中文在线一区二区三区| 67194国产| 美女诱惑在线一区| 青青操日韩| 亚洲无码 国产无码| 在线综合色| 在线观看一卡二卡| 美女黄页| 中字一区| 视频国产成人精品日本亚洲18| 亚洲最大的综合性av| 中文字幕视频在线观看一区二区| 日本熟妇色熟妇在线视频播放| 日日骚一区二区三区| 岛国色情视频在线观看| 欧美制服另类丝袜| 无码操逼天堂| 日韩性爱小视频| 中文字幕黄色片| 成人精品视频| 久久亚洲AV无码白度| 日韩欧美亚洲一区二区三区影院| 国产精品制服丝袜中文字幕日韩一区二区三区 | 亚洲九九爱| 97香蕉网| 大香蕉久久| 曰本精品久久久| 蜜臀网址在线| 探花一区二区三| julia在线观看久久| 久热精品在线| 色狠狠 - 百度| 亚洲97P| 色姑娘综合网| 丝袜大香蕉| 91丝袜在线观看视频在线观看| 一本一首道人妻少妇免费久久| 老鸭窝在线视频播放| 天天艹天天日| 国产欧美日韩女同性恋ww喷水精品| 女一区二区| 四季av一区二区凹凸精品小说| 91大神精品长腿在线观看网站| 99色在线| 亚洲,欧美,综合网| 围产精品一区二区三区视频播放| 乱理日韩中文| 91亚洲欧洲| 婷婷五月天AV| 老司机免费视频在线91| 无码高清操逼网址| 1024久久高清视频| 91在线丝袜| 青娱乐国产盛宴视频| 亚洲和欧美裸体美女双飞视频| 男女性无套 免费九一| 九九久久九九久久| 夫妻日逼| 亚洲国产精品久久久久久久久久| 97精品全部| AA级电影三区| 国产视频一区二区三区久久亚洲天堂| 一区二区高清视频| 天综合中文| 超碰97 线线 在现| 99精品久久| 另类欧美色| 日韩乱码av| 香蕉99秘 一区精品蜜桃臀| 日韩一级片| 97伊人超碰| 99精品久久| 中文字幕成人乱码熟女精品国50| 日本天天色| 97欧美日韩综合| 涩五月婷婷| 火箭成精品视频884必出精品| 97超碰国产亚洲精品资源| 精品女同一区| 日韩黄色电影网站| 久久久久久久久久久久色网| 国产精品交换一区二区| 狠狠91| 夜夜爽妓女| 中文字幕AV乱伦| 在线免费试看60秒| 久久久精品成人国产| 日韩欧美中文字| AV网站高清无码在线观看| 国产AV线| 嗯嗯啊中文字幕| 欧美激情一区| 精品久久久久瑟瑟| 天天操夜夜操狠很操| 亚洲AV在线资源| aaa一级黄片| 久久久无码视频| 久久e6只有精品| 一牛影视成人片免费| 欧美日日人人天天| 久久亚洲不卡| 亚洲精品国语在线播放| 精品无吗久久| 亚欧视频在线| 亚洲 欧美综合| 亚洲精品天天影视综合网 | 樱花蜜乳av| 偷拍欧美亚洲| 欧美久久婷| 欧美视频一区二区在线| 麻豆一区二区三区在线看| 亚洲一区二区麻豆影院| 日本一区视频在线观看| 大色网久久| 美女露胸露屁股| 777AV电影| 18+91网站| 无码人妻丰满熟妇奶水区毛片| 99re公开精品免费视频| 97超碰公开| 求求你操操我| 国产精品久久久久av| 中文字幕97| 青青草中日韩在线| 蜜臀久久久久久999| 国产成年免费大片黄在线观看| 情色五月天就去干| 老熟女熟妇| 97人人模人人爽人人| 国产又黄又粗又猛大片| 91爱欧美| 午夜男人天堂| 日韩精品一区二区三区色欲| 亚洲电影中字一区二区| 中日992视频| 欧美三级免费伊人| 黄色毛片A片| 午夜福利一区二区影院| 久热这里| 国产欧美日韩臀| 中文字幕高清20页视频| 97精品熟女少妇一区| 人妻喷水| 久久久久久9999| 25国产精品免费观看| 在线欧美69V免费观看视频| 男人的天堂VA| 日韩美女高潮喷水视频| 日韩AV无码中文一区二区| 亚洲欧美人妻| 校园春色 亚洲| 熟女网站最新| 欧美亚洲20p| 人妻激情偷乱视频一区二区三区 | 一区二区乱码福利| 人妻少妇无码| 热热色色综合| 加勒比综合九九99视频在线播放| 亚洲激情AV| 天天日B夜夜干B时时操B| 91在线精品一区二区三区| 美女91AV| 青青青草原| 足交视频老司机| 熟妇高潮一区二| 熟女精品一区二区三区| 福利在线观看一区二区| 久久免费99精品久久久久久| 中文字幕在线免费观看| 欧美综合综合| 超碰97综合网| 亚洲资源网| 97超碰免费人人性爱| 91人妻丝袜无码| 中文伊人大香蕉视频| 久久婷婷伊人| 亚欧高清在线| 亚洲女毛多水多21P| 日韩亚洲精品一区二区| 免费?级毛片无码?∨蜜芽试看| 日本道不卡| 亚州男人天堂| 欧美激情内射| 天美传媒精品久久视频| 2017大香蕉国产精品久久| 美骚妇av高清在线| 99久久综合| 色第一页| 四虎国产成人精品免费一女五男| 天天日日舔舔| 爱爱60秒免费视频| 日韩欧美麻豆大片| 美女人妻色网站| 狠狠狠一区二区三区| 久久99黄色卞西瓜| 天天摸,夜夜摸| 日本人体九九九九九九| 熟女丰满人妻一区| 久久小视频| 欧美黑人性猛交91| 欧美日韩岛国大片在线观看| 日韩女模中文造逼| 福利在线黄片| 三级三久久线久久99久目本WW| 欧美精品久久久久久久久88| 亚洲精品美女久久久久久久久| 免费毛片在线播放| 日韩在线观看中文字幕视频| 开心婷婷五月| 成人欧美一区二区三区黑人一| 国产精品一区二区三区在线密挑| 色五月婷婷麻豆在| 精品超碰中文在线| 欧美熟妇人体| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师 | 91激情国产| 日本精品加勒比海一区| 久这精品中文在线观看视频| 97国产超碰| 成人a v在线播放免费| 人人干黄色| 久久精品中文字幕无码l| 新婚人妻扶着粗大强行坐下| 91干熟女| AV天堂丝袜| 天天碰操中国年青熟妇| 加勒比伊人影院| 欧洲一区二区| 超碰人妻97| 日韩av无码网站| ji熟女.com| 操逼操操操91| 超碰97欧美在线| 极品久久久久久久久久久久久久| 狠狠操一区二区| 青青草久草AV| 久久无码精品| 国产日韩欧美操逼视频| 偷窥自拍A片| 九九玖玖精品| 国产精品天干天干综合网麻豆| 91天天爽| 边做饭边操逼逼| 日本道久久综合色色| www.天天干| 亚洲五月丁香花狠狠干一区二区三区| 久久国产99精品72福利| 久久精品免视看国产成人﹣蜜臀av一区. 久久精品免视看国产成人,蜜臀av一区 | 色老牛| 日韩欧美天堂| 久久精品久久久久久久| 日本三级精品| 超碰在线人人射| 成人美女av| 天天干天天日天天射黄色| 先锋音影AV| 天天综合官网| 操迟操逼在巾线Fre看| 五月天婷婷影院| 91爱看| 亚洲天堂男人天堂| 国产一区在线观看无码AV | 丁香五月激情五月| 欧美亚洲AN| 欧美在线啊啊| 在线欧美69V免费观看视频| 丁香五月性| 亚洲视频二区| 2017大香蕉| 性爱av网站| 丝袜喷水在线| 在线观看视频91| 久久久日本电影| 午夜福利免费福利视频| 日韩精品人妻系列无码天堂| 大香蕉懂9| α√在线| 精品97精品97| 熟妇色99| 天堂种子在线www网资源| 玖玖97综合 | 欧美色棕合| 欧美日韩人妻精品一区二区三区| 国产精品视频自拍在线| 2020视频1区2区3区| 青青草华人在线欧美在线| 日韩一级欧美一级国产一级台湾 | 爱射综合| AV久日| 国产高清免费不卡av| 欧美激情超碰777| 日本媚薬中文字幕在线| 日韩在线一区高清在线| 久久精品亚洲婷婷| 91欧美网| 99热这里是精品| 婷婷探花久久精品一区| 欧美91变态| www久久久| 欧美夜夜骑视频| 日日操免费视频| 国产夜夜艹| 夜夜骑夜夜操| 亚洲aV无码成人在线观看| Aa东京男人的天堂| 午夜一区二区三区国产| 久妇网| 久久久久九九九| 亚洲精品人妻在线| 欧美成人色|