행위

Sql script converter

DB CAFE

Dbcafe (토론 | 기여)님의 2020년 3월 15일 (일) 01:58 판 (새 문서: < # -*- coding: utf-8 -*- import sys, string from PyQt4 import QtGui, QtCore class Window(QtGui.QMainWindow): def __init__(self): super(Window, self).__init__()...)
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)
thumb_up 추천메뉴 바로가기


<

  1. -*- coding: utf-8 -*-

import sys, string from PyQt4 import QtGui, QtCore

class Window(QtGui.QMainWindow):

   def __init__(self):
       super(Window, self).__init__()
       #self.setGeometry(400, 20, 1200, 800)
       self.setFixedSize(1200, 800)
       self.setWindowTitle("SQL Script Converter")
       self.setWindowIcon(QtGui.QIcon("c:\sqlscriptconverter/img/pythonlogo.png"))
       QtGui.QApplication.setStyle("Cleanlooks")
       font = self.font()                                           # set font
       font.setFamily("GulimChe")
       font.setPointSize(10)
       self.setFont(font)
       self.statusBar()                                             # set statusbar
       self.vListcount = 0                                          # set user variables
       self.vEditchanged = False
       self.vSQLScript = ""
       # -- create listwidget objects ------------------------------
       self.tListwidget = QtGui.QListWidget(self)                   # set listwidget
       self.tListwidget.setGeometry(QtCore.QRect(30, 66, 220, 650))
       self.tListwidget.setFont(font)                               # set font of listwidget
       self.tListwidget.setStatusTip("This is a QlistWidget object.")
       # -- open file and add item ---------------------------------
       tInitfile = open('c:\sqlscriptconverter\convertlist.ini', 'r')
       while True:
           vInitfile = tInitfile.readline()                         # no more line, return "None"
           if not vInitfile:
               break
           self.tListwidget.addItem(vInitfile.replace("\n", ""))    # add list item
       tInitfile.close()
       # -- create button objects ----------------------------------
       tButtonClear = QtGui.QPushButton("Clear", self)              # set clear button
       tButtonClear.clicked.connect(self.on_button_clear)
       tButtonClear.resize(100, 22)
       tButtonClear.move(30, 22)
       tButtonClear.setStatusTip("Clear text on the window.")
       tButtonConvert = QtGui.QPushButton("Convert(F5)", self)      # set convert button
       tButtonConvert.clicked.connect(self.on_button_convert)
       tButtonConvert.resize(100, 22)
       tButtonConvert.move(150, 22)
       tButtonConvert.setStatusTip("Convert your scripts on a rule basis. ")
       tButtonExit = QtGui.QPushButton("Exit", self)                # set exit button
       tButtonExit.clicked.connect(QtCore.QCoreApplication.instance().quit)
       tButtonExit.resize(100, 22)
       tButtonExit.move(1070, 22)
       tButtonExit.setStatusTip("Quit this application.")
       # -- create textedit objects -------------------------------
       self.tTextedit = QtGui.QTextEdit(self)                       # set textedit box
       self.tTextedit.move(270, 66)
       self.tTextedit.resize(900, 650)
       self.tTextedit.textChanged.connect(self.on_text_changed)
       self.tTextedit.setStatusTip("You can paste your script here and convert it.")
       # -- create progressbar objects -----------------------------
       self.tProgress = QtGui.QProgressBar(self)                    # set progressbar
       self.tProgress.setGeometry(30, 734, 1130, 20)
       self.on_load_sql()
   def on_load_sql(self):                                           # set initiate loading
       self.vSQLfile = open('c:\sqlscriptconverter\sql.ini', 'r')
       self.vSQLread = self.vSQLfile.read()
       self.tTextedit.setText(self.vSQLread)
       self.vSQLfile.close()
   def on_text_changed(self):
       self.vEditchanged = True
   def on_button_clear(self):                                       # set action of clear button
       self.vEditchanged = False
       self.vSQLScript = ""
       #self.on_load_sql()
       self.tTextedit.clear()
       self.tProgress.setValue(0)
   def keyPressEvent(self, e):                                      # system method for F-Key
       if e.key() == QtCore.Qt.Key_F5:
           self.on_button_convert()
   def on_button_convert(self):                                     # set actioni of vconvert button
       vKey1 = ""                                                   # 변환될 단어 할당(ex. select)
       vKey2 = ""                                                   # 변환할 단어 할당(ex. SELECT)
       vKeylist      = ["\n", "\t", "(", " ", ";", ",", ")"]        # 변환 단어 + 리스트 결합
       vKeylistcount = len(vKeylist)                                # 리스트 개수 저장
       vLoop = 0                                                    # 프로그래스바를 위한 Loop 카운팅
       self.vListcount = self.tListwidget.count()
       self.vSQLScript = self.tTextedit.toPlainText()
       vBarrate = 100. / (self.vListcount * vKeylistcount)
       for i in range(1, self.vListcount + 1):
           vKey1 = self.tListwidget.item(i-1).text()
           vKey2 = str(vKey1).upper()
           for j in range(1, vKeylistcount + 1):
               vLoop += 1
               vSQL1 = vKey1 + vKeylist[j - 1]
               vSQL2 = vKey2 + vKeylist[j - 1]
               self.vSQLScript = string.replace(self.vSQLScript, vSQL1, vSQL2)
               self.tProgress.setValue(vBarrate * vLoop)
       # -- 불용어 역전환
       xKey = ["skey", "wkey", "fkey", "tkey", "account", "quotas", "_key", ".ref", "_ref", "gkey", "dateend"]
       for xxKey in xKey:
           self.vSQLScript = string.replace(self.vSQLScript, xxKey, xxKey.lower())
       self.tTextedit.setText(self.vSQLScript)

if __name__ == "__main__":

   app = QtGui.QApplication(sys.argv)
   gui = Window()
   gui.show()
   sys.exit(app.exec_())

</source>