精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

快灬快灬一下爽蜜桃在线观看| 影音先锋成人资源网站| www.色国产| 欧美亚洲国产一区| 日韩亚洲欧美中文三级| 无罩大乳的熟妇正在播放| 阿v免费在线观看| 国产成人免费在线| 国产精品999999| 欧美成人一二三区| 国产欧美一区| 精品久久久久久最新网址| 久久综合久久色| 在线免费观看的av| 久久久亚洲精品石原莉奈| 成人av番号网| 久久精品视频5| 91精品亚洲| 亚洲乱码一区二区| 妖精视频在线观看| 成人午夜亚洲| 欧美日韩在线影院| 青青视频免费在线观看| 高h视频在线| 成人免费视频一区| 91视频国产高清| 国产日产精品一区二区三区| 正在播放日韩欧美一页| 国产亚洲欧洲在线| 亚洲av网址在线| 日韩最新av| 欧美日韩高清一区二区三区| 北条麻妃在线观看| 波多野结衣中文在线| 亚洲三级小视频| 亚洲午夜精品久久久中文影院av| 欧美高清电影在线| 99久久精品免费精品国产| 成人在线看片| 国产成人毛毛毛片| 狠狠色丁香久久婷婷综合_中| 国产成人福利视频| 在线观看日本网站| 日日夜夜免费精品| 色av一区二区| 亚洲欧美激情一区| 亚洲高清视频免费| 欧美电影在线观看网站| 在线看一区二区| 久久国产乱子伦免费精品| 91福利在线免费| 亚洲观看高清完整版在线观看| 中文字幕成人一区| 黄色av电影在线观看| 日韩一区欧美一区| 伊人av成人| 欧美成人三区| 综合分类小说区另类春色亚洲小说欧美| 午夜精品电影在线观看| 粉嫩一区二区三区国产精品| 久久久九九九九| 欧美日本韩国在线| 国产精品久久久久久久龚玥菲| 91蜜桃网址入口| 久久久影院一区二区三区| 视频午夜在线| 久久久久久久久久久99999| 日本a级片久久久| 国产视频二区在线观看| 久久久久久99精品| 亚洲精品在线免费看| 日韩av中文| 成人免费一区二区三区在线观看 | 国产精品调教视频| 亚洲成人av资源网| 无码人妻精品一区二区三应用大全| 日韩激情网站| 伊人久久男人天堂| 色欲人妻综合网| 韩国在线视频一区| 8x海外华人永久免费日韩内陆视频| 日韩免费不卡视频| 久久精品中文| 91欧美日韩一区| 亚洲黄色一级大片| www一区二区| 亚洲精品在线免费| 丝袜在线视频| 欧美午夜宅男影院在线观看| 男女男精品视频站| 欧美精品三级在线| 日韩激情av在线免费观看| 日本综合在线观看| 韩国在线视频一区| 国产成人一区二区| 国产免费av电影| 97久久精品人人做人人爽| 亚洲精品久久区二区三区蜜桃臀 | 亚洲视频一区二区免费在线观看| 日韩精品久久一区二区| av综合电影网站| 欧美一区二区视频在线观看2022| 中文成人无字幕乱码精品区| heyzo久久| 久久久爽爽爽美女图片| 国产精品国产精品国产| 成人性色生活片| 色姑娘综合网| gogo久久| 91精品国产美女浴室洗澡无遮挡| 香蕉视频黄色在线观看| 66视频精品| 国产成人精品一区二区在线| 午夜精品无码一区二区三区| 国产喷白浆一区二区三区| 日本久久久网站| 99精品在免费线偷拍| 亚洲电影免费观看高清| 国产高清视频免费在线观看| 午夜亚洲影视| 国产精品久久久久久久免费大片 | 亚洲国产精品成人综合色在线婷婷| 中文字幕日韩精品无码内射| 国产超碰精品| 亚洲国产精品国自产拍av秋霞| 精品国产欧美日韩不卡在线观看 | 国产精品日日做人人爱| 天天操天天干天天插| 最新国产成人在线观看| 亚洲人成无码www久久久| 成人线上播放| 欧美精品午夜视频| 91精东传媒理伦片在线观看| 欧美精彩视频一区二区三区| 欧美爱爱视频免费看| 超碰一区二区三区| 欧美大片网站在线观看| 国产情侣av在线| 国产精品久久毛片av大全日韩| 老熟妇仑乱视频一区二区| 亚洲视频分类| 2020久久国产精品| 亚洲色图欧美视频| 午夜国产精品影院在线观看| 亚洲美女在线播放| 亚洲小说欧美另类社区| av日韩中文字幕| 亚洲小说区图片| 日韩欧美视频在线| 青春草免费视频| 国产在线精品不卡| 在线观看日本一区| 日韩成人精品一区二区三区| 深夜福利亚洲导航| 91亚洲精品国偷拍自产在线观看| 国产精品天天摸av网| 天天干天天草天天| 99免费精品| 亚洲精品免费一区二区三区| 国产高清一区二区三区视频 | 深夜视频在线观看| 激情欧美日韩| 久久久水蜜桃| 国产69精品久久久久9999人| 在线视频一区二区| 一本色道久久综合无码人妻| 亚洲手机成人高清视频| 香蕉视频在线观看黄| 在线观看一区视频| 久久99国产精品99久久| 日本久久免费| 色婷婷av一区二区三区久久| 国产手机视频在线| 亚洲第一搞黄网站| 熟女俱乐部一区二区视频在线| 日韩av在线播放中文字幕| 一级日韩一区在线观看| 激情视频亚洲| 69视频在线免费观看| 国产午夜在线观看| 在线播放91灌醉迷j高跟美女| 男女羞羞免费视频| 91老师国产黑色丝袜在线| 在线观看免费污视频| 午夜性色一区二区三区免费视频| 国产精品三区www17con| 外国成人直播| 亚洲福利一区二区| 国产精品99蜜臀久久不卡二区| 国产私人尤物无码不卡| 欧美一级高清片在线观看| 日韩欧美一区二区一幕| 国产精品久久久久精k8| 日本黄色播放器| 蜜桃麻豆www久久国产精品| 欧美精品亚洲精品| 亚洲图色在线| 青春草国产视频| 国产精品无码av无码| 制服丝袜综合网| 中文写幕一区二区三区免费观成熟| av网在线观看| 51午夜精品国产| 国产91精品一区| 亚洲日本va在线观看| www.自拍偷拍| 国产一区二区三区日韩| 午夜视频在线瓜伦| 国产精品s色| 亚州欧美一区三区三区在线| 黄色成人在线免费观看| 高清欧美日韩| 欧美尤物巨大精品爽| 久草资源在线| 一本色道久久88亚洲综合88| 日韩在线观看视频一区| 7777精品伊人久久久大香线蕉超级流畅 | 亚洲人线精品午夜| 亚洲经典一区二区三区| 欧美喷潮久久久xxxxx| 亚洲天堂一区在线| 亚洲国产一区二区三区| 免费在线观看a级片| 欧美国产丝袜视频| 91av在线免费| 成+人+亚洲+综合天堂| 交换做爰国语对白| 久久精品国产精品青草| 18禁男女爽爽爽午夜网站免费| 激情婷婷亚洲| 久久精品无码中文字幕| 女生裸体视频一区二区三区| 亚洲国产高清国产精品| 欧美日韩高清| 免费在线观看一区二区| 美女主播精品视频一二三四| caoporen国产精品| 伊人精品久久| 99九九电视剧免费观看| 国产精品视频首页| 91免费电影网站| 日本欧美在线| 91夜夜揉人人捏人人添红杏| 亚洲精品成a人ⅴ香蕉片| 成人午夜av在线| 欧美性潮喷xxxxx免费视频看| 在线中文字幕第一区| 欧美另类videos| 欧美福利一区| 国产一级做a爰片久久毛片男| 欧美二区视频| 久草视频国产在线| 99香蕉国产精品偷在线观看 | 国产精品 欧美激情| 中文字幕中文乱码欧美一区二区| www中文在线| 亚洲欧美色图小说| 欧美国产精品一二三| 一区2区3区在线看| 国产精品变态另类虐交| 五月综合激情网| 最近免费中文字幕大全免费版视频| 色又黄又爽网站www久久| 中文字幕视频二区| 在线不卡一区二区| 亚洲爱爱综合网| 亚洲福利精品在线| 极品美乳网红视频免费在线观看| 中文字幕亚洲一区在线观看 | 国产免费播放一区二区| 亚洲激情图片| 国产在线成人| 97超碰青青草| 蜜臀av一区二区在线免费观看| 999在线精品视频| 成人av影院在线| 好吊视频在线观看| 亚洲欧美色一区| 日韩免费视频网站| 欧美色视频在线| 精品国产伦一区二区三| 亚洲免费视频一区二区| 91在线观看| 久久久久久久久久久久久久久久久久av | 伊人婷婷欧美激情| 天天干天天干天天干天天| 欧美色区777第一页| 刘亦菲久久免费一区二区| 亚洲精品在线看| 日韩av男人天堂| 欧美国产先锋| 超薄肉色丝袜足j调教99| 国产日韩欧美三区| 久久久久xxxx| 26uuu国产一区二区三区| 亚洲欧美综合7777色婷婷| 亚洲第一福利视频在线| 中国老头性行为xxxx| 精品国产污网站| www.av在线播放| 欧美激情视频播放| 国产精品第一国产精品| 激情视频一区二区| 天天av综合| 日本精品www| 国产剧情av麻豆香蕉精品| 成人精品999| 亚洲线精品一区二区三区| 在线视频欧美亚洲| 日韩av中文字幕在线| 国产不卡在线| 国产精品一区久久| 亚洲理论电影| 国产精品久久久久7777| 精品无码三级在线观看视频| 3d动漫精品啪啪一区二区下载| 亚洲精品视频自拍| 亚洲系列在线观看| 亚洲欧美中文另类| 国产va在线视频| 99re视频在线| 亚洲精品国产成人影院| 欧美一级黄色影院| 91论坛在线播放| 日本熟妇毛茸茸丰满| 日韩免费一区二区三区在线播放| eeuss影院在线观看| 国产97色在线| 五月天亚洲色图| 免费在线观看亚洲视频| 福利一区福利二区| 欧美极品aaaaabbbbb| 欧美久久久久久久久久| 午夜在线播放| 国产精品久久久| 精品香蕉视频| 中文字幕无码不卡免费视频| 99re热这里只有精品免费视频| 国产亚洲精品久久777777| 精品国产成人在线影院| 日本中文字幕中出在线| 超碰国产精品久久国产精品99| 欧美99在线视频观看| 日本人dh亚洲人ⅹxx| 亚洲精品视频观看| 性一交一乱一色一视频麻豆| 另类专区欧美制服同性| 欧美成人精品一级| 免费看欧美黑人毛片| 国产**成人网毛片九色 | 黄视频在线观看网站| 国产精品直播网红| 欧美3p视频| 992tv人人草| 一区二区高清在线| 亚洲av永久无码国产精品久久| 欧美贵妇videos办公室| 国产精品第9页| 亚洲精选在线视频| www.久久色| 国内精品久久久| 亚洲高清极品| 成年人在线观看视频免费| 国产精品色哟哟网站| 国产精品特级毛片一区二区三区| www.午夜精品| 91成人福利| 欧美性大战久久久久xxx| 久久久精品蜜桃| 一本色道久久综合精品婷婷| 欧美日本中文字幕| 啪啪激情综合网| 中文字幕第36页| 依依成人精品视频| 青青草视频免费在线观看| 国产精品久久久久久久久久久久久| 久久精品国产大片免费观看| 日日夜夜精品视频免费观看| 亚洲一二三级电影| 国产在线视频资源| 91精品视频一区| 99国产精品私拍| 99在线视频免费| 欧美成人综合网站| 欧美日韩五码| 9l视频自拍9l视频自拍| 99re免费视频精品全部| 国产精品久久久国产盗摄| 久久人人97超碰精品888| 欧美日韩水蜜桃| 久久人妻少妇嫩草av蜜桃| 色婷婷综合久久| 日本片在线看| 日韩一区国产在线观看| 成人免费视频app| 羞羞色院91蜜桃| 欧美黄色成人网| 日本一区二区在线看| 欧美大片免费播放器| 91精品久久久久久久99蜜桃|