精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Python模擬Oracle的SQL/PLUS工具的實現方法

數據庫 Oracle
本文我們主要介紹了用Python模擬Oracle的SQL/PLUS工具的實現方法,并給出了詳細的源代碼,希望能夠對您有所幫助。

Python模擬Oracle的SQL/PLUS工具的實現方法是本文我們主要要介紹的內容。我們知道,團隊計劃開發數據庫服務平臺,需要用到一些服務器的腳本開發,為了了解python,給自己定了一個模擬sqlplus的小需求,然后去實現。

個人體會:

python開發快捷,集成很多常用的公共包,對常用數據結構使用很方便,***的缺點是版本較多,新版本不向前兼容,對AIX及HP-UNIX不太常用的OS也缺少直接支持。

以下是工具演示:

Python模擬Oracle的SQL/PLUS工具的實現方法
  

以下是源代碼:

以下代碼用的python版本是python2.7 http://www.python.org/
需要安裝cx_Oracle開發包(python訪問ORACLE用的) http://cx-oracle.sourceforge.net/

  1. import cx_Oracle    
  2.  
  3. import os    
  4.  
  5. import sys    
  6.  
  7. os.environ['NLS_LANG'] ='AMERICAN_AMERICA.ZHS16GBK';    
  8.  
  9. connectresult=0;    
  10.  
  11. promptstr="";    
  12.  
  13. fetchsize=50;    
  14.  
  15. #conn = cx_Oracle.connect('yzs/yzs@mydb');     
  16.  
  17. print("------------Welcome To Python Sqlplus ----------------------");    
  18.  
  19. print("|  Version     : 0.1");    
  20.  
  21. print("|  Author      : MKing");    
  22.  
  23. print("|  Blog        : http://blog.csdn.net/yzsind");    
  24.  
  25. print("|  Sina weibo  : http://weibo.com/yzsind");    
  26.  
  27. print("|  Release Date: 2011-08-08");    
  28.  
  29. print("|  Login Example1:username/password@tnsname");    
  30.  
  31. print("|  Login Example2:username/password@host:port/dbname");    
  32.  
  33. print("|  Input exit to Quit");    
  34.  
  35. print("-----------------------------------------------------------");    
  36.  
  37. print("");    
  38.  
  39.     
  40.  
  41. def getConnect(loginstr):    
  42.  
  43.   global connectresult    
  44.  
  45.   global promptstr    
  46.  
  47.   try:    
  48.  
  49.     connectresult=0;    
  50.  
  51.     promptstr="";    
  52.  
  53.     conncx_Oracle.connect(loginstr);    
  54.  
  55.     promptstr=conn.username+"@"+conn.dsn;    
  56.  
  57.     print("Database version:",conn.version);    
  58.  
  59.     print("Connected.");    
  60.  
  61.     connectresult=1;    
  62.  
  63.     return conn    
  64.  
  65.   except cx_Oracle.InterfaceError as exc:    
  66.  
  67.     error, = exc.args    
  68.  
  69.     print(exc);    
  70.  
  71.   except cx_Oracle.DatabaseError as exc:    
  72.  
  73.     error, = exc.args    
  74.  
  75.     print(error.message);    
  76.  
  77. def getcolformatstr(coldef):    
  78.  
  79.   if coldef[1]==cx_Oracle.NUMBER:    
  80.  
  81.     formatstr='%12s';    
  82.  
  83.   else:    
  84.  
  85.     if coldef[2]<=32:    
  86.  
  87.       formatstr='%-'+str(coldef[2])+'s';    
  88.  
  89.     else:    
  90.  
  91.       formatstr='%-32s';    
  92.  
  93.   return formatstr    
  94.  
  95.       
  96.  
  97. #########################################################################     
  98.  
  99. while 1:    
  100.  
  101.   try:    
  102.  
  103.     loginstr=raw_input("login>").strip();    
  104.  
  105.     if loginstr=="" :    
  106.  
  107.       continue;    
  108.  
  109.     elif loginstr in ["exit","exit;"]:    
  110.  
  111.       print("...bye...");    
  112.  
  113.       exit();        
  114.  
  115.     conn = getConnect(loginstr);    
  116.  
  117.     if connectresult==1:    
  118.  
  119.       break;    
  120.  
  121.   except KeyboardInterrupt:    
  122.  
  123.     print("^C");    
  124.  
  125.     continue;      
  126.  
  127. while 1:    
  128.  
  129.   sqlstr="";    
  130.  
  131.   try:    
  132.  
  133.     sqlstrline=raw_input(promptstr+">").strip();    
  134.  
  135.     if sqlstrline=="" :    
  136.  
  137.       continue;    
  138.  
  139.     elif sqlstrline.lower() in ["exit","exit;"]:    
  140.  
  141.       print("...bye...");    
  142.  
  143.       exit();    
  144.  
  145.     elif sqlstrline[0:7].lower()=="connect" :    
  146.  
  147.       conn = getConnect(sqlstrline[8:]);    
  148.  
  149.     elif sqlstrline.lower() in ["disconnect","disconnect;"] :    
  150.  
  151.       conn.close();    
  152.  
  153.       print("Connection closed.");    
  154.  
  155.     elif sqlstrline[0:4].lower()=="host" :    
  156.  
  157.       os.system(sqlstrline[4:])    
  158.  
  159.     else:    
  160.  
  161.       sqlstrsqlstr=sqlstr+sqlstrline+'\n';    
  162.  
  163.       while sqlstrline[-1]!=";" :    
  164.  
  165.         sqlstrline=raw_input().strip();    
  166.  
  167.         sqlstrsqlstr=sqlstr+sqlstrline+'\n';    
  168.  
  169.       sqlstrsqlstr=sqlstr[0:len(sqlstr)-2]    
  170.  
  171.       try:    
  172.  
  173.         cursor = conn.cursor();    
  174.  
  175.         cursor.execute(sqlstr);    
  176.  
  177.         if sqlstr[0:6].lower()=="select" :    
  178.  
  179.           cols=[]    
  180.  
  181.           for col in cursor.description:    
  182.  
  183.             print(getcolformatstr(col) % (col[0])),    
  184.  
  185.           print('');    
  186.  
  187.           for col in cursor.description:    
  188.  
  189.             if col[1]==cx_Oracle.NUMBER:    
  190.  
  191.               print('-'*12),;    
  192.  
  193.             else:    
  194.  
  195.               if col[2]<=32:    
  196.  
  197.                 print('-'*col[2]),;    
  198.  
  199.               else:    
  200.  
  201.                 print('-'*32),;    
  202.  
  203.           print('');    
  204.  
  205.           recs = cursor.fetchmany(fetchsize);    
  206.  
  207.           while len(recs)>0:    
  208.  
  209.             for row in recs:    
  210.  
  211.               for i in range(len(row)):    
  212.  
  213.                 if row[i]!=None:    
  214.  
  215.                   print(getcolformatstr(cursor.description[i]) % row[i]),;    
  216.  
  217.                 else:    
  218.  
  219.                   print(getcolformatstr(cursor.description[i]) % ''),;      
  220.  
  221.               print('')    
  222.  
  223.             recs = cursor.fetchmany(fetchsize);    
  224.  
  225.           print(str(cursor.rowcount)+" rows selected.");    
  226.  
  227.         elif sqlstr[0:6].lower()=="insert" :    
  228.  
  229.           print(str(cursor.rowcount)+" rows inserted.");    
  230.  
  231.         elif sqlstr[0:6].lower()=="update" :    
  232.  
  233.           print(str(cursor.rowcount)+" rows updated.");    
  234.  
  235.         elif sqlstr[0:6].lower()=="delete" :    
  236.  
  237.           print(str(cursor.rowcount)+" rows deleted.");    
  238.  
  239.         elif sqlstr[0:5].lower()=="merge" :    
  240.  
  241.           print(str(cursor.rowcount)+" rows merged.");    
  242.  
  243.         elif sqlstr[0:6].lower()=="commit" :    
  244.  
  245.           print("Commit complete.");    
  246.  
  247.         elif sqlstr[0:6].lower()=="rollback" :    
  248.  
  249.           print("Rollback complete.");    
  250.  
  251.         else :    
  252.  
  253.           print("sql execute complete.");    
  254.  
  255.       except cx_Oracle.InterfaceError as exc:    
  256.  
  257.         error, = exc.args    
  258.  
  259.         print(exc);    
  260.  
  261.       except cx_Oracle.DatabaseError as exc:    
  262.  
  263.         error, = exc.args    
  264.  
  265.         print(error.message);    
  266.  
  267.   except KeyboardInterrupt:    
  268.  
  269.     print("^C");    
  270.  
  271.     continue;   

特別說明:純屬個人學習python的代碼,未考慮擴展性與性能,未經過專業測試,不建議拿到實際工作中當SQLPLUS用。

關于Python模擬Oracle的SQL/PLUS工具的實現方法就介紹到這里了,希望本次的介紹能夠對您有所收獲!

【編輯推薦】

  1. 適合初學者的MySQL學習筆記之管理員常用操作總結
  2. 適合初學者的MySQL學習筆記之SELECT語句使用詳解
  3. MySQL數據庫存儲引擎之MyISAM和InnoDB的區別對比
  4. 適合初學者的MySQL學習筆記之ORDER BY子句使用詳解
  5. 適合初學者的MySQL學習筆記之MySQL常用命令操作技巧



 

責任編輯:趙鵬 來源: CSDN博客
相關推薦

2010-03-30 18:31:17

Oracle Copy

2010-11-18 17:08:44

Oracle使用SQL

2010-10-29 13:34:09

Oracle日志

2010-11-19 13:42:38

2010-05-04 17:49:39

Oracle安裝

2009-11-05 17:53:59

Oracle導出SQL

2010-05-10 16:17:19

Oracle LogM

2009-08-07 09:35:40

Oracle發送Ema

2010-10-29 14:20:54

Oracle移動控制文

2010-11-19 13:14:21

Oracle刪除歸檔日

2010-03-31 15:03:54

Oracle執行

2011-07-27 09:57:24

SQL TraceOracle

2010-10-27 16:49:23

Oracle刪除重復記

2010-10-29 16:12:51

Oracle存儲過程

2010-11-15 14:07:16

Oracle取固定記錄

2023-09-14 08:20:46

JDBC數據庫

2010-10-25 15:56:02

Oracle PLSQL過程調試

2010-10-26 11:04:48

oracle數據導入

2009-03-26 10:46:58

OraclePL、SQL存儲過程

2009-03-09 16:39:19

PL SQLOracle過程調試
點贊
收藏

51CTO技術棧公眾號

欧美日韩国产精品一区二区不卡中文| 国产精品一区二区三区乱码| 一夜七次郎国产精品亚洲| 黄色片视频在线| 国产在线观看av| va亚洲va日韩不卡在线观看| 国产精品欧美一区二区| 欧美精品一级片| 亚洲警察之高压线| 日韩一级精品视频在线观看| 欧美视频第一区| 欧美三级黄网| 99精品桃花视频在线观看| 国产精品小说在线| 天天做天天爱夜夜爽| 天天射成人网| 亚洲欧美一区二区精品久久久| 中文字幕 日韩 欧美| 男人久久天堂| 一区二区三区在线高清| 日韩精品国内| 少妇无码一区二区三区| 极品美女销魂一区二区三区| 欧美一区视频在线| 免费在线观看av网址| 青青草成人影院| 亚洲护士老师的毛茸茸最新章节| 9l视频白拍9色9l视频| 182在线视频观看| 亚洲精品国产无天堂网2021| 亚洲成人精品电影在线观看| 欧美孕妇孕交xxⅹ孕妇交| 国产成人午夜高潮毛片| 成人免费网站在线观看| 三级网站在线播放| 亚洲深爱激情| 久久久久久国产免费| 成人黄色短视频| 精品国产乱码久久久久久果冻传媒| 日韩欧美国产不卡| 色哟哟在线观看视频| 日本午夜精品久久久久| 欧美色成人综合| 欧美三级午夜理伦三级| 丝袜老师在线| 五月激情综合色| 妞干网在线视频观看| a毛片在线观看| 亚洲欧美乱综合| 一区二区免费在线观看| 国产福利电影在线| 国产视频一区在线播放| 欧美日韩国产三区| 黄色在线播放| 欧美—级在线免费片| 日韩av一区二区三区在线| 理论视频在线| 国产亚洲成av人在线观看导航| 久久99热只有频精品91密拍| 四虎永久在线观看| 99久久国产综合精品麻豆| 九色91视频| 欧美孕妇孕交| 国产精品久久久久久久久动漫 | 久久99国产精品视频| 精品一区二区三区四区在线| 97超碰在线免费观看| 国产一区二区三区日韩精品| 国产一区二区三区在线播放免费观看| 特级西西www444人体聚色 | 国产午夜精品视频一区二区三区| 国产精品久久麻豆| 一区二区三区在线视频免费| 成人在线国产视频| 午夜裸体女人视频网站在线观看| 色女孩综合影院| 视频在线观看免费高清| 国产美女亚洲精品7777| 精品国产免费人成电影在线观看四季 | 日日狠狠久久| 日韩欧美在线影院| 一级特黄a大片免费| 国产麻豆一区二区三区精品视频| 在线看片第一页欧美| 九九热视频在线免费观看| 欧美影视一区| 日韩av电影在线网| 国产一区二区波多野结衣 | 国产精品无码一区二区三区免费| 精品在线91| 久久久国产一区二区| 成人午夜视频精品一区| 日韩不卡免费视频| av成人观看| 欧美91精品久久久久国产性生爱| 亚洲欧洲日韩在线| 亚洲 高清 成人 动漫| 欧洲亚洲精品久久久久| 亚洲高清av在线| 成人无码av片在线观看| 激情久久中文字幕| 国产精品视频yy9099| 好吊色在线观看| 亚洲国产高清在线观看视频| 欧美久久在线观看| 成人久久网站| 亚洲精品99久久久久| 日韩一级片大全| 久久午夜精品| 国产一区二区精品免费| 欧美高清视频| 欧美性猛xxx| 男生和女生一起差差差视频| 色综合综合色| **欧美日韩vr在线| 99国产精品久久久久久久成人| 国产三级精品在线| 久久亚洲中文字幕无码| 电影91久久久| 最近中文字幕mv在线一区二区三区四区| 69精品久久久| 国产一区二区三区日韩| 性刺激综合网| 三级成人黄色影院| 日韩精品中文在线观看| 国产一级片网址| 国产一区二区三区久久悠悠色av| 日韩欧美三级一区二区| 性爽视频在线| 亚洲黄色免费三级| 国产 日韩 欧美 成人| 国产久卡久卡久卡久卡视频精品| 亚洲v国产v| 视频二区不卡| 亚洲天堂久久av| 免费污污视频在线观看| 2020国产成人综合网| 成人综合视频在线| 老司机在线精品视频| 欧美日韩成人精品| 不卡视频免费在线观看| 亚洲影院在线观看| 亚洲成人激情小说| 欧美日韩亚洲国产精品| 不卡一区二区三区视频| 18视频在线观看| 欧美一级欧美三级在线观看 | 亚洲欧美综合| 91久久极品少妇xxxxⅹ软件| 精品51国产黑色丝袜高跟鞋| 欧美精品在线视频| 四虎永久免费在线| 国产乱淫av一区二区三区| 久久av喷吹av高潮av| 日韩精品一级| 97激碰免费视频| 色中色在线视频| 91久久免费观看| 91导航在线观看| 久久超碰97中文字幕| 在线观看日韩片| 国产日韩欧美中文在线| 久久999免费视频| 欧美一区二区在线观看视频| 五月天激情综合| 我不卡一区二区| 精品一区二区影视| 轻点好疼好大好爽视频| 精品女人视频| 国产成人在线亚洲欧美| 麻豆影视国产在线观看| 精品精品欲导航| aaa在线视频| 国产精品久久毛片| 中文字幕在线观看视频www| 在线国产欧美| 日韩三级电影免费观看| 国产精品xnxxcom| 国内精品小视频| av中文在线| 欧美一区二区在线播放| 日韩欧美一区二区一幕| 中文字幕第一区综合| 韩国三级与黑人| 久久一二三四| 国内外成人激情免费视频| 全国精品免费看| 国产区亚洲区欧美区| 青春草免费在线视频| 亚洲色图35p| 精品久久久久成人码免费动漫| 欧美日韩亚洲激情| 色哟哟一一国产精品| 99久免费精品视频在线观看| 国产超碰在线播放| 国产精品v亚洲精品v日韩精品 | 91网站在线看| 日产福利视频在线观看| 理论片在线不卡免费观看| 五月婷婷六月色| 91精品福利在线一区二区三区 | 91精品国产色综合久久久蜜香臀| 国产a∨精品一区二区三区仙踪林| 中文字幕亚洲一区二区va在线| 亚洲最大免费视频| 国产一区二区三区久久久| 女人扒开屁股爽桶30分钟| 中文字幕一区二区三三| 欧美少妇一区| 精品欠久久久中文字幕加勒比| 国产欧美日韩免费| 日本免费一区二区六区| 欧美日本在线视频中文字字幕| 精品av中文字幕在线毛片| 日韩你懂的在线播放| 91丨九色丨海角社区| 亚洲第一成人在线| 91视频免费在线看| 国产精品久久久久影视| 欧美熟妇一区二区| 成人午夜私人影院| 992tv人人草| 美日韩一区二区三区| 国产三级日本三级在线播放| 最新国产乱人伦偷精品免费网站| 中文字幕日韩一区二区三区| 久草成人资源| 欧美日韩精品免费观看| 亚洲va久久久噜噜噜久久| 国产伦精品一区二区三区四区免费| 最新亚洲国产| 91美女片黄在线观| 日韩成人精品一区二区三区| 国产精品丝袜久久久久久不卡| 电影亚洲精品噜噜在线观看| 青草青草久热精品视频在线观看| 密臀av在线播放| 97成人超碰免| 理论片午夜视频在线观看| 欧美极品美女视频网站在线观看免费| 超碰在线免费播放| 美女视频久久黄| 99自拍视频在线观看| 久久香蕉国产线看观看av| 免费观看在线午夜影视| 久久人人爽人人爽人人片亚洲| 欧美激情二区| 欧美老肥婆性猛交视频| 丝袜综合欧美| 久久久久久久久91| 678在线观看视频| 欧美亚洲激情在线| 三级成人在线| 91九色视频导航| 精品久久亚洲| 丁香婷婷久久久综合精品国产| 成人av影音| 精品欧美一区二区在线观看视频| 五月激激激综合网色播| 欧美在线视频一区二区三区| 成人免费a**址| 亚洲精品一区二| 久久久久免费av| 日韩一级片免费视频| 亚洲制服av| 午夜剧场高清版免费观看| 国产成人精品一区二| 精品一区二区三区四区五区六区| 99久久精品情趣| av网站免费在线看| 亚洲欧洲日韩女同| 国产一级淫片a| 色av一区二区| 国产婷婷在线视频| 亚洲国产精品一区二区久| 国产特黄在线| 久久在精品线影院精品国产| 国产在线天堂www网在线观看| 欧洲中文字幕国产精品| 亚洲国产综合在线观看| 国产精品av一区| 欧美日韩高清| 免费看日b视频| 麻豆久久精品| 看看黄色一级片| a级高清视频欧美日韩| 一级片黄色录像| 亚洲电影在线免费观看| 日韩国产亚洲欧美| 日韩欧美国产精品| 国产高清免费av在线| 欧美极品少妇与黑人| 九色成人搞黄网站| 国产日韩一区欧美| 久久精品高清| 国产在线精品91| 激情五月婷婷综合网| www.久久国产| 亚洲精品国产精品乱码不99| 国产suv精品一区二区33| 日韩欧美一区二区免费| 国产精品久久一区二区三区不卡| 欧美另类第一页| 精品乱码一区二区三区四区| 狠狠色综合一区二区| 亚洲91精品| 亚欧在线免费观看| 99精品欧美一区二区三区综合在线| 免费成人深夜蜜桃视频| 欧美丝袜一区二区三区| 性少妇videosexfreexxx片| 亚洲天堂av图片| 松下纱荣子在线观看| 国产精品v欧美精品v日韩| 午夜精品一区二区三区国产 | 99er在线视频| 久草中文综合在线| 日本乱子伦xxxx| 精品国产精品自拍| 国产91绿帽单男绿奴| 久久深夜福利免费观看| 99蜜月精品久久91| 日韩精品久久久| 天堂成人免费av电影一区| 荫蒂被男人添免费视频| 亚洲美女区一区| 国产普通话bbwbbwbbw| 中文字幕一区二区三区电影| 无人区在线高清完整免费版 一区二 | www国产精品内射老熟女| 国产成人综合网站| 麻豆视频在线免费看| 337p亚洲精品色噜噜噜| 午夜激情视频在线观看| 国产精品美女午夜av| 久久99高清| 国产精品拍拍拍| 欧美国产精品一区| 中文在线观看av| 亚洲欧美中文日韩在线| 在线最新版中文在线| 欧美成人一区二区在线| 国产精品嫩草99av在线| 一区二区视频观看| 欧美丝袜一区二区三区| 手机亚洲第一页| 日本高清久久天堂| 久久不卡国产精品一区二区 | 无码人妻精品一区二区三区99v| 蜜桃视频在线观看一区| 蜜桃av.com| 91精品国产福利| 成人影音在线| 久久人人九九| 日韩电影在线看| 午夜精品一区二区三级视频| 欧美一区二区三区小说| 污的网站在线观看| 国产一区二区三区色淫影院| 国产精品资源| 欧美日韩生活片| 91麻豆精品国产91久久久资源速度 | 欧美精品免费在线| 加勒比色综合久久久久久久久| 激情伊人五月天| 国产视频亚洲色图| 国产乱淫av片免费| 久久久最新网址| 国产精品视频一区二区三区四蜜臂| www.色就是色| 亚洲精品菠萝久久久久久久| 无码国产色欲xxxx视频| 国产成人精品久久二区二区91| 婷婷亚洲五月色综合| 日本69式三人交| 91久久精品一区二区三| 欧美成年黄网站色视频| 国产精品区一区二区三在线播放| 性色一区二区| 污污的视频在线免费观看| 精品电影一区二区三区| 成人日韩在线观看| 激情成人开心网| 日本一区二区视频在线| 亚洲精品97久久中文字幕无码| 欧美一区三区三区高中清蜜桃| 亚洲成人精品| 亚洲AV无码国产成人久久| 欧美一区二区在线免费观看| 男女羞羞在线观看| 成年人免费观看的视频| 91亚洲精品乱码久久久久久蜜桃| 欧美成人一区二区视频| 欧美极品在线播放| 色综合久久网| 日韩av一二区| 精品女同一区二区| 九七影院97影院理论片久久| 青青青免费在线| 亚洲精品日韩专区silk|