日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Python模擬Oracle的SQL/PLUS工具的實現(xiàn)方法

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

創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比播州網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式播州網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋播州地區(qū)。費用合理售后完善,10余年實體公司更值得信賴。

個人體會:

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

以下是工具演示:

以下是源代碼:

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

 
 
 
 
  1. import cx_Oracle  
  2. import os  
  3. import sys  
  4. os.environ['NLS_LANG'] ='AMERICAN_AMERICA.ZHS16GBK';  
  5. connectresult=0;  
  6. promptstr="";  
  7. fetchsize=50;  
  8. #conn = cx_Oracle.connect('yzs/yzs@mydb');   
  9. print("------------Welcome To Python Sqlplus ----------------------");  
  10. print("|  Version     : 0.1");  
  11. print("|  Author      : MKing");  
  12. print("|  Blog        : http://blog.csdn.net/yzsind");  
  13. print("|  Sina weibo  : http://weibo.com/yzsind");  
  14. print("|  Release Date: 2011-08-08");  
  15. print("|  Login Example1:username/password@tnsname");  
  16. print("|  Login Example2:username/password@host:port/dbname");  
  17. print("|  Input exit to Quit");  
  18. print("-----------------------------------------------------------");  
  19. print("");  
  20.   
  21. def getConnect(loginstr):  
  22.   global connectresult  
  23.   global promptstr  
  24.   try:  
  25.     connectresult=0;  
  26.     promptstr="";  
  27.     conn= cx_Oracle.connect(loginstr);  
  28.     promptstr=conn.username+"@"+conn.dsn;  
  29.     print("Database version:",conn.version);  
  30.     print("Connected.");  
  31.     connectresult=1;  
  32.     return conn  
  33.   except cx_Oracle.InterfaceError as exc:  
  34.     error, = exc.args  
  35.     print(exc);  
  36.   except cx_Oracle.DatabaseError as exc:  
  37.     error, = exc.args  
  38.     print(error.message);  
  39. def getcolformatstr(coldef):  
  40.   if coldef[1]==cx_Oracle.NUMBER:  
  41.     formatstr='%12s';  
  42.   else:  
  43.     if coldef[2]<=32:  
  44.       formatstr='%-'+str(coldef[2])+'s';  
  45.     else:  
  46.       formatstr='%-32s';  
  47.   return formatstr  
  48.     
  49. #########################################################################   
  50. while 1:  
  51.   try:  
  52.     loginstr=raw_input("login>").strip();  
  53.     if loginstr=="" :  
  54.       continue;  
  55.     elif loginstr in ["exit","exit;"]:  
  56.       print("...bye...");  
  57.       exit();      
  58.     conn = getConnect(loginstr);  
  59.     if connectresult==1:  
  60.       break;  
  61.   except KeyboardInterrupt:  
  62.     print("^C");  
  63.     continue;    
  64. while 1:  
  65.   sqlstr="";  
  66.   try:  
  67.     sqlstrline=raw_input(promptstr+">").strip();  
  68.     if sqlstrline=="" :  
  69.       continue;  
  70.     elif sqlstrline.lower() in ["exit","exit;"]:  
  71.       print("...bye...");  
  72.       exit();  
  73.     elif sqlstrline[0:7].lower()=="connect" :  
  74.       conn = getConnect(sqlstrline[8:]);  
  75.     elif sqlstrline.lower() in ["disconnect","disconnect;"] :  
  76.       conn.close();  
  77.       print("Connection closed.");  
  78.     elif sqlstrline[0:4].lower()=="host" :  
  79.       os.system(sqlstrline[4:])  
  80.     else:  
  81.       sqlstrsqlstr=sqlstr+sqlstrline+'\n';  
  82.       while sqlstrline[-1]!=";" :  
  83.         sqlstrline=raw_input().strip();  
  84.         sqlstrsqlstr=sqlstr+sqlstrline+'\n';  
  85.       sqlstrsqlstr=sqlstr[0:len(sqlstr)-2]  
  86.       try:  
  87.         cursor = conn.cursor();  
  88.         cursor.execute(sqlstr);  
  89.         if sqlstr[0:6].lower()=="select" :  
  90.           cols=[]  
  91.           for col in cursor.description:  
  92.             print(getcolformatstr(col) % (col[0])),  
  93.           print('');  
  94.           for col in cursor.description:  
  95.             if col[1]==cx_Oracle.NUMBER:  
  96.               print('-'*12),;  
  97.             else:  
  98.               if col[2]<=32:  
  99.                 print('-'*col[2]),;  
  100.               else:  
  101.                 print('-'*32),;  
  102.           print('');  
  103.           recs = cursor.fetchmany(fetchsize);  
  104.           while len(recs)>0:  
  105.             for row in recs:  
  106.               for i in range(len(row)):  
  107.                 if row[i]!=None:  
  108.                   print(getcolformatstr(cursor.description[i]) % row[i]),;  
  109.                 else:  
  110.                   print(getcolformatstr(cursor.description[i]) % ''),;    
  111.               print('')  
  112.             recs = cursor.fetchmany(fetchsize);  
  113.           print(str(cursor.rowcount)+" rows selected.");  
  114.         elif sqlstr[0:6].lower()=="insert" :  
  115.           print(str(cursor.rowcount)+" rows inserted.");  
  116.         elif sqlstr[0:6].lower()=="update" :  
  117.           print(str(cursor.rowcount)+" rows updated.");  
  118.         elif sqlstr[0:6].lower()=="delete" :  
  119.           print(str(cursor.rowcount)+" rows deleted.");  
  120.         elif sqlstr[0:5].lower()=="merge" :  
  121.           print(str(cursor.rowcount)+" rows merged.");  
  122.         elif sqlstr[0:6].lower()=="commit" :  
  123.           print("Commit complete.");  
  124.         elif sqlstr[0:6].lower()=="rollback" :  
  125.           print("Rollback complete.");  
  126.         else :  
  127.           print("sql execute complete.");  
  128.       except cx_Oracle.InterfaceError as exc:  
  129.         error, = exc.args  
  130.         print(exc);  
  131.       except cx_Oracle.DatabaseError as exc:  
  132.         error, = exc.args  
  133.         print(error.message);  
  134.   except KeyboardInterrupt:  
  135.     print("^C");  
  136.     continue;  

特別說明:純屬個人學(xué)習(xí)python的代碼,未考慮擴展性與性能,未經(jīng)過專業(yè)測試,不建議拿到實際工作中當(dāng)SQLPLUS用。

關(guān)于Python模擬Oracle的SQL/PLUS工具的實現(xiàn)方法就介紹到這里了,希望本次的介紹能夠?qū)δ兴斋@!


分享題目:Python模擬Oracle的SQL/PLUS工具的實現(xiàn)方法
分享網(wǎng)址:http://www.5511xx.com/article/coegjph.html