Tested some stuff
This commit is contained in:
parent
d3013ff6a9
commit
e0ca5ab613
3
.gitignore
vendored
3
.gitignore
vendored
|
|
@ -239,3 +239,6 @@ fabric.properties
|
|||
# Android studio 3.1+ serialized cache file
|
||||
.idea/caches/build_file_checksums.ser
|
||||
|
||||
.idea/
|
||||
|
||||
apikey
|
||||
200
gui/Window.ui
Normal file
200
gui/Window.ui
Normal file
|
|
@ -0,0 +1,200 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>MainWindow</class>
|
||||
<widget class="QMainWindow" name="MainWindow">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>800</width>
|
||||
<height>600</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>MainWindow</string>
|
||||
</property>
|
||||
<widget class="QWidget" name="centralwidget">
|
||||
<widget class="QLineEdit" name="textInput">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>20</x>
|
||||
<y>30</y>
|
||||
<width>661</width>
|
||||
<height>21</height>
|
||||
</rect>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QLabel" name="textLabel">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>20</x>
|
||||
<y>10</y>
|
||||
<width>71</width>
|
||||
<height>16</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Write Text</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QLabel" name="statementLabel">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>20</x>
|
||||
<y>60</y>
|
||||
<width>121</width>
|
||||
<height>16</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>SQL Statement:</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QLineEdit" name="statementInput">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>20</x>
|
||||
<y>80</y>
|
||||
<width>661</width>
|
||||
<height>21</height>
|
||||
</rect>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QPushButton" name="convertButton">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>690</x>
|
||||
<y>30</y>
|
||||
<width>91</width>
|
||||
<height>24</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Convert to SQL</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QLineEdit" name="shellInput">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>20</x>
|
||||
<y>150</y>
|
||||
<width>661</width>
|
||||
<height>21</height>
|
||||
</rect>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QLabel" name="shellLabel">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>20</x>
|
||||
<y>126</y>
|
||||
<width>91</width>
|
||||
<height>20</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>SQL Shell</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QPushButton" name="executeButton">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>690</x>
|
||||
<y>150</y>
|
||||
<width>91</width>
|
||||
<height>24</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Execute</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QPushButton" name="pasteButton">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>690</x>
|
||||
<y>80</y>
|
||||
<width>91</width>
|
||||
<height>24</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Paste to Shell</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QLabel" name="outputLabel">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>20</x>
|
||||
<y>180</y>
|
||||
<width>661</width>
|
||||
<height>16</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>outputLabel</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QTableWidget" name="outputTable">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>20</x>
|
||||
<y>240</y>
|
||||
<width>761</width>
|
||||
<height>311</height>
|
||||
</rect>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QLabel" name="outputTableLabel">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>20</x>
|
||||
<y>220</y>
|
||||
<width>49</width>
|
||||
<height>16</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Output</string>
|
||||
</property>
|
||||
</widget>
|
||||
</widget>
|
||||
<widget class="QMenuBar" name="menubar">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>800</width>
|
||||
<height>22</height>
|
||||
</rect>
|
||||
</property>
|
||||
<widget class="QMenu" name="menuSettings">
|
||||
<property name="title">
|
||||
<string>Settings</string>
|
||||
</property>
|
||||
<addaction name="actionConnect_DB"/>
|
||||
<addaction name="actionConnect_API_Key"/>
|
||||
<addaction name="actionExit"/>
|
||||
</widget>
|
||||
<addaction name="menuSettings"/>
|
||||
</widget>
|
||||
<widget class="QStatusBar" name="statusbar"/>
|
||||
<action name="actionConnect_DB">
|
||||
<property name="text">
|
||||
<string>Connect DB</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="actionConnect_API_Key">
|
||||
<property name="text">
|
||||
<string>Connect API Key</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="actionExit">
|
||||
<property name="text">
|
||||
<string>Exit</string>
|
||||
</property>
|
||||
</action>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
||||
43
gui/apikey.py
Normal file
43
gui/apikey.py
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Form implementation generated from reading ui file 'apikey.ui'
|
||||
#
|
||||
# Created by: PyQt5 UI code generator 5.15.9
|
||||
#
|
||||
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
|
||||
# run again. Do not edit this file unless you know what you are doing.
|
||||
|
||||
|
||||
from PyQt5 import QtCore, QtGui, QtWidgets
|
||||
|
||||
|
||||
class Ui_Form(object):
|
||||
def setupUi(self, Form):
|
||||
Form.setObjectName("Form")
|
||||
Form.resize(265, 91)
|
||||
self.label = QtWidgets.QLabel(Form)
|
||||
self.label.setGeometry(QtCore.QRect(20, 10, 91, 16))
|
||||
self.label.setObjectName("label")
|
||||
self.lineEdit = QtWidgets.QLineEdit(Form)
|
||||
self.lineEdit.setGeometry(QtCore.QRect(110, 10, 141, 21))
|
||||
self.lineEdit.setObjectName("lineEdit")
|
||||
self.pushButton = QtWidgets.QPushButton(Form)
|
||||
self.pushButton.setGeometry(QtCore.QRect(14, 40, 111, 24))
|
||||
self.pushButton.setObjectName("pushButton")
|
||||
self.pushButton_2 = QtWidgets.QPushButton(Form)
|
||||
self.pushButton_2.setGeometry(QtCore.QRect(134, 40, 121, 24))
|
||||
self.pushButton_2.setObjectName("pushButton_2")
|
||||
self.label_2 = QtWidgets.QLabel(Form)
|
||||
self.label_2.setGeometry(QtCore.QRect(20, 70, 231, 16))
|
||||
self.label_2.setObjectName("label_2")
|
||||
|
||||
self.retranslateUi(Form)
|
||||
QtCore.QMetaObject.connectSlotsByName(Form)
|
||||
|
||||
def retranslateUi(self, Form):
|
||||
_translate = QtCore.QCoreApplication.translate
|
||||
Form.setWindowTitle(_translate("Form", "Form"))
|
||||
self.label.setText(_translate("Form", "OpenAI API-Key"))
|
||||
self.pushButton.setText(_translate("Form", "Test Key"))
|
||||
self.pushButton_2.setText(_translate("Form", "Save"))
|
||||
self.label_2.setText(_translate("Form", "Key working..."))
|
||||
81
gui/apikey.ui
Normal file
81
gui/apikey.ui
Normal file
|
|
@ -0,0 +1,81 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>Form</class>
|
||||
<widget class="QWidget" name="Form">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>265</width>
|
||||
<height>91</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Form</string>
|
||||
</property>
|
||||
<widget class="QLabel" name="label">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>20</x>
|
||||
<y>10</y>
|
||||
<width>91</width>
|
||||
<height>16</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>OpenAI API-Key</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QLineEdit" name="lineEdit">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>110</x>
|
||||
<y>10</y>
|
||||
<width>141</width>
|
||||
<height>21</height>
|
||||
</rect>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QPushButton" name="pushButton">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>14</x>
|
||||
<y>40</y>
|
||||
<width>111</width>
|
||||
<height>24</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Test Key</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QPushButton" name="pushButton_2">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>134</x>
|
||||
<y>40</y>
|
||||
<width>121</width>
|
||||
<height>24</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Save</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QLabel" name="label_2">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>20</x>
|
||||
<y>70</y>
|
||||
<width>231</width>
|
||||
<height>16</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Key working...</string>
|
||||
</property>
|
||||
</widget>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
||||
77
gui/connection.py
Normal file
77
gui/connection.py
Normal file
|
|
@ -0,0 +1,77 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Form implementation generated from reading ui file '.\connection.ui'
|
||||
#
|
||||
# Created by: PyQt5 UI code generator 5.15.9
|
||||
#
|
||||
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
|
||||
# run again. Do not edit this file unless you know what you are doing.
|
||||
|
||||
|
||||
from PyQt5 import QtCore, QtGui, QtWidgets
|
||||
|
||||
|
||||
class Ui_Form(object):
|
||||
def setupUi(self, Form):
|
||||
Form.setObjectName("Form")
|
||||
Form.resize(249, 217)
|
||||
self.label = QtWidgets.QLabel(Form)
|
||||
self.label.setGeometry(QtCore.QRect(20, 10, 101, 16))
|
||||
self.label.setObjectName("label")
|
||||
self.label_2 = QtWidgets.QLabel(Form)
|
||||
self.label_2.setGeometry(QtCore.QRect(20, 40, 49, 16))
|
||||
self.label_2.setObjectName("label_2")
|
||||
self.label_3 = QtWidgets.QLabel(Form)
|
||||
self.label_3.setGeometry(QtCore.QRect(20, 70, 61, 16))
|
||||
self.label_3.setObjectName("label_3")
|
||||
self.label_4 = QtWidgets.QLabel(Form)
|
||||
self.label_4.setGeometry(QtCore.QRect(20, 100, 81, 16))
|
||||
self.label_4.setObjectName("label_4")
|
||||
self.label_5 = QtWidgets.QLabel(Form)
|
||||
self.label_5.setGeometry(QtCore.QRect(20, 130, 61, 16))
|
||||
self.label_5.setObjectName("label_5")
|
||||
self.IP = QtWidgets.QLineEdit(Form)
|
||||
self.IP.setGeometry(QtCore.QRect(100, 10, 131, 21))
|
||||
self.IP.setText("")
|
||||
self.IP.setObjectName("IP")
|
||||
self.port = QtWidgets.QLineEdit(Form)
|
||||
self.port.setGeometry(QtCore.QRect(100, 40, 131, 21))
|
||||
self.port.setText("")
|
||||
self.port.setObjectName("port")
|
||||
self.username = QtWidgets.QLineEdit(Form)
|
||||
self.username.setGeometry(QtCore.QRect(100, 70, 131, 21))
|
||||
self.username.setText("")
|
||||
self.username.setObjectName("username")
|
||||
self.password = QtWidgets.QLineEdit(Form)
|
||||
self.password.setGeometry(QtCore.QRect(100, 100, 131, 21))
|
||||
self.password.setInputMethodHints(QtCore.Qt.ImhHiddenText|QtCore.Qt.ImhSensitiveData)
|
||||
self.password.setObjectName("password")
|
||||
self.database = QtWidgets.QLineEdit(Form)
|
||||
self.database.setGeometry(QtCore.QRect(100, 130, 131, 21))
|
||||
self.database.setObjectName("database")
|
||||
self.TestConnection = QtWidgets.QPushButton(Form)
|
||||
self.TestConnection.setEnabled(False)
|
||||
self.TestConnection.setGeometry(QtCore.QRect(14, 160, 101, 24))
|
||||
self.TestConnection.setObjectName("TestConnection")
|
||||
self.saveButton = QtWidgets.QPushButton(Form)
|
||||
self.saveButton.setEnabled(False)
|
||||
self.saveButton.setGeometry(QtCore.QRect(130, 160, 101, 24))
|
||||
self.saveButton.setObjectName("saveButton")
|
||||
self.returnLabel = QtWidgets.QLabel(Form)
|
||||
self.returnLabel.setGeometry(QtCore.QRect(20, 190, 211, 16))
|
||||
self.returnLabel.setObjectName("returnLabel")
|
||||
|
||||
self.retranslateUi(Form)
|
||||
QtCore.QMetaObject.connectSlotsByName(Form)
|
||||
|
||||
def retranslateUi(self, Form):
|
||||
_translate = QtCore.QCoreApplication.translate
|
||||
Form.setWindowTitle(_translate("Form", "Form"))
|
||||
self.label.setText(_translate("Form", "IP"))
|
||||
self.label_2.setText(_translate("Form", "Port"))
|
||||
self.label_3.setText(_translate("Form", "Username"))
|
||||
self.label_4.setText(_translate("Form", "Password"))
|
||||
self.label_5.setText(_translate("Form", "Database"))
|
||||
self.TestConnection.setText(_translate("Form", "Test Connection"))
|
||||
self.saveButton.setText(_translate("Form", "Save"))
|
||||
self.returnLabel.setText(_translate("Form", "Connection ... / Saved..."))
|
||||
208
gui/connection.ui
Normal file
208
gui/connection.ui
Normal file
|
|
@ -0,0 +1,208 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>Form</class>
|
||||
<widget class="QWidget" name="Form">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>249</width>
|
||||
<height>217</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Form</string>
|
||||
</property>
|
||||
<widget class="QLabel" name="label">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>20</x>
|
||||
<y>10</y>
|
||||
<width>101</width>
|
||||
<height>16</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>IP</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QLabel" name="label_2">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>20</x>
|
||||
<y>40</y>
|
||||
<width>49</width>
|
||||
<height>16</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Port</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QLabel" name="label_3">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>20</x>
|
||||
<y>70</y>
|
||||
<width>61</width>
|
||||
<height>16</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Username</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QLabel" name="label_4">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>20</x>
|
||||
<y>100</y>
|
||||
<width>81</width>
|
||||
<height>16</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Password</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QLabel" name="label_5">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>20</x>
|
||||
<y>130</y>
|
||||
<width>61</width>
|
||||
<height>16</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Database</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QLineEdit" name="IP">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>100</x>
|
||||
<y>10</y>
|
||||
<width>131</width>
|
||||
<height>21</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QLineEdit" name="port">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>100</x>
|
||||
<y>40</y>
|
||||
<width>131</width>
|
||||
<height>21</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QLineEdit" name="username">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>100</x>
|
||||
<y>70</y>
|
||||
<width>131</width>
|
||||
<height>21</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QLineEdit" name="password">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>100</x>
|
||||
<y>100</y>
|
||||
<width>131</width>
|
||||
<height>21</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="inputMethodHints">
|
||||
<set>Qt::ImhHiddenText|Qt::ImhSensitiveData</set>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QLineEdit" name="database">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>100</x>
|
||||
<y>130</y>
|
||||
<width>131</width>
|
||||
<height>21</height>
|
||||
</rect>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QPushButton" name="TestConnection">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>14</x>
|
||||
<y>160</y>
|
||||
<width>101</width>
|
||||
<height>24</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Test Connection</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QPushButton" name="saveButton">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>130</x>
|
||||
<y>160</y>
|
||||
<width>101</width>
|
||||
<height>24</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Save</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QLabel" name="returnLabel">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>20</x>
|
||||
<y>190</y>
|
||||
<width>211</width>
|
||||
<height>16</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Connection ... / Saved...</string>
|
||||
</property>
|
||||
</widget>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections>
|
||||
<connection>
|
||||
<sender>IP</sender>
|
||||
<signal>textChanged(QString)</signal>
|
||||
<receiver>saveButton</receiver>
|
||||
<slot>customSlot()</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>171</x>
|
||||
<y>25</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>199</x>
|
||||
<y>170</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
</connections>
|
||||
</ui>
|
||||
6
gui/connectionui.py
Normal file
6
gui/connectionui.py
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
from PyQt5 import QtCore, QtGui, QtWidgets
|
||||
|
||||
class UiConnect(QtWidgets):
|
||||
def __init__(self):
|
||||
self.setupUi(self)
|
||||
|
||||
34
gui/main.py
Normal file
34
gui/main.py
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
import sys
|
||||
from PyQt5.QtWidgets import QApplication, QMainWindow, QDialog
|
||||
from mainWindow import Ui_MainWindow
|
||||
from connection import Ui_Form
|
||||
|
||||
class MainWindow(QMainWindow):
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
self.ui = Ui_MainWindow()
|
||||
self.ui.setupUi(self)
|
||||
self.ui.actionConnect_DB.triggered.connect(self.open_connection)
|
||||
|
||||
def open_connection(self):
|
||||
self.connection_window = ConnectionWindow(self)
|
||||
self.connection_window.show()
|
||||
|
||||
class ConnectionWindow(QDialog):
|
||||
def __init__(self, parent=None):
|
||||
super().__init__(parent)
|
||||
self.ui = Ui_Form()
|
||||
self.ui.setupUi(self)
|
||||
self.ui.saveButton.setEnabled(False)
|
||||
|
||||
def customSlot(self, text):
|
||||
if self.ui.IP.text():
|
||||
self.ui.saveButton.setEnabled(True)
|
||||
else:
|
||||
self.ui.saveButton.setEnabled(False)
|
||||
|
||||
if __name__ == "__main__":
|
||||
app = QApplication(sys.argv)
|
||||
window = MainWindow()
|
||||
window.show()
|
||||
sys.exit(app.exec_())
|
||||
96
gui/mainWindow.py
Normal file
96
gui/mainWindow.py
Normal file
|
|
@ -0,0 +1,96 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Form implementation generated from reading ui file '.\Window.ui'
|
||||
#
|
||||
# Created by: PyQt5 UI code generator 5.15.9
|
||||
#
|
||||
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
|
||||
# run again. Do not edit this file unless you know what you are doing.
|
||||
|
||||
|
||||
from PyQt5 import QtCore, QtGui, QtWidgets
|
||||
|
||||
|
||||
class Ui_MainWindow(object):
|
||||
def setupUi(self, MainWindow):
|
||||
MainWindow.setObjectName("MainWindow")
|
||||
MainWindow.resize(800, 600)
|
||||
self.centralwidget = QtWidgets.QWidget(MainWindow)
|
||||
self.centralwidget.setObjectName("centralwidget")
|
||||
self.textInput = QtWidgets.QLineEdit(self.centralwidget)
|
||||
self.textInput.setGeometry(QtCore.QRect(20, 30, 661, 21))
|
||||
self.textInput.setObjectName("textInput")
|
||||
self.textLabel = QtWidgets.QLabel(self.centralwidget)
|
||||
self.textLabel.setGeometry(QtCore.QRect(20, 10, 71, 16))
|
||||
self.textLabel.setObjectName("textLabel")
|
||||
self.statementLabel = QtWidgets.QLabel(self.centralwidget)
|
||||
self.statementLabel.setGeometry(QtCore.QRect(20, 60, 121, 16))
|
||||
self.statementLabel.setObjectName("statementLabel")
|
||||
self.statementInput = QtWidgets.QLineEdit(self.centralwidget)
|
||||
self.statementInput.setGeometry(QtCore.QRect(20, 80, 661, 21))
|
||||
self.statementInput.setObjectName("statementInput")
|
||||
self.convertButton = QtWidgets.QPushButton(self.centralwidget)
|
||||
self.convertButton.setGeometry(QtCore.QRect(690, 30, 91, 24))
|
||||
self.convertButton.setObjectName("convertButton")
|
||||
self.shellInput = QtWidgets.QLineEdit(self.centralwidget)
|
||||
self.shellInput.setGeometry(QtCore.QRect(20, 150, 661, 21))
|
||||
self.shellInput.setObjectName("shellInput")
|
||||
self.shellLabel = QtWidgets.QLabel(self.centralwidget)
|
||||
self.shellLabel.setGeometry(QtCore.QRect(20, 130, 101, 16))
|
||||
self.shellLabel.setObjectName("shellLabel")
|
||||
self.executeButton = QtWidgets.QPushButton(self.centralwidget)
|
||||
self.executeButton.setGeometry(QtCore.QRect(690, 150, 91, 24))
|
||||
self.executeButton.setObjectName("executeButton")
|
||||
self.pasteButton = QtWidgets.QPushButton(self.centralwidget)
|
||||
self.pasteButton.setGeometry(QtCore.QRect(690, 80, 91, 24))
|
||||
self.pasteButton.setObjectName("pasteButton")
|
||||
self.outputLabel = QtWidgets.QLabel(self.centralwidget)
|
||||
self.outputLabel.setGeometry(QtCore.QRect(20, 180, 661, 16))
|
||||
self.outputLabel.setObjectName("outputLabel")
|
||||
self.outputTable = QtWidgets.QTableWidget(self.centralwidget)
|
||||
self.outputTable.setGeometry(QtCore.QRect(20, 240, 761, 311))
|
||||
self.outputTable.setObjectName("outputTable")
|
||||
self.outputTable.setColumnCount(0)
|
||||
self.outputTable.setRowCount(0)
|
||||
self.outputTableLabel = QtWidgets.QLabel(self.centralwidget)
|
||||
self.outputTableLabel.setGeometry(QtCore.QRect(20, 220, 49, 16))
|
||||
self.outputTableLabel.setObjectName("outputTableLabel")
|
||||
MainWindow.setCentralWidget(self.centralwidget)
|
||||
self.menubar = QtWidgets.QMenuBar(MainWindow)
|
||||
self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 22))
|
||||
self.menubar.setObjectName("menubar")
|
||||
self.menuSettings = QtWidgets.QMenu(self.menubar)
|
||||
self.menuSettings.setObjectName("menuSettings")
|
||||
MainWindow.setMenuBar(self.menubar)
|
||||
self.statusbar = QtWidgets.QStatusBar(MainWindow)
|
||||
self.statusbar.setObjectName("statusbar")
|
||||
MainWindow.setStatusBar(self.statusbar)
|
||||
self.actionConnect_DB = QtWidgets.QAction(MainWindow)
|
||||
self.actionConnect_DB.setObjectName("actionConnect_DB")
|
||||
self.actionConnect_API_Key = QtWidgets.QAction(MainWindow)
|
||||
self.actionConnect_API_Key.setObjectName("actionConnect_API_Key")
|
||||
self.actionExit = QtWidgets.QAction(MainWindow)
|
||||
self.actionExit.setObjectName("actionExit")
|
||||
self.menuSettings.addAction(self.actionConnect_DB)
|
||||
self.menuSettings.addAction(self.actionConnect_API_Key)
|
||||
self.menuSettings.addAction(self.actionExit)
|
||||
self.menubar.addAction(self.menuSettings.menuAction())
|
||||
|
||||
self.retranslateUi(MainWindow)
|
||||
QtCore.QMetaObject.connectSlotsByName(MainWindow)
|
||||
|
||||
def retranslateUi(self, MainWindow):
|
||||
_translate = QtCore.QCoreApplication.translate
|
||||
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
|
||||
self.textLabel.setText(_translate("MainWindow", "Write Text"))
|
||||
self.statementLabel.setText(_translate("MainWindow", "SQL Statement:"))
|
||||
self.convertButton.setText(_translate("MainWindow", "Convert to SQL"))
|
||||
self.shellLabel.setText(_translate("MainWindow", "SQL Shell"))
|
||||
self.executeButton.setText(_translate("MainWindow", "Execute"))
|
||||
self.pasteButton.setText(_translate("MainWindow", "Paste to Shell"))
|
||||
self.outputLabel.setText(_translate("MainWindow", "oputputLabel"))
|
||||
self.outputTableLabel.setText(_translate("MainWindow", "Output"))
|
||||
self.menuSettings.setTitle(_translate("MainWindow", "Settings"))
|
||||
self.actionConnect_DB.setText(_translate("MainWindow", "Connect DB"))
|
||||
self.actionConnect_API_Key.setText(_translate("MainWindow", "Connect API Key"))
|
||||
self.actionExit.setText(_translate("MainWindow", "Exit"))
|
||||
90
nogui/database/postgresql.py
Normal file
90
nogui/database/postgresql.py
Normal file
|
|
@ -0,0 +1,90 @@
|
|||
import psycopg2
|
||||
|
||||
class Postgres:
|
||||
def __init__(self):
|
||||
self.db_ip = 'localhost'
|
||||
self.db_port = '32771'
|
||||
self.db_username = 'root'
|
||||
self.db_password = ''
|
||||
self.db_name = ''
|
||||
|
||||
def config(self, ip, port, username, password, name):
|
||||
self.db_ip = ip
|
||||
self.db_port = port
|
||||
self.db_username = username
|
||||
self.db_password = password
|
||||
self.db_name = name
|
||||
|
||||
def fetchall(self, query):
|
||||
conn = psycopg2.connect(
|
||||
host=self.db_ip,
|
||||
port=self.db_port,
|
||||
user=self.db_username,
|
||||
password=self.db_password,
|
||||
database=self.db_name
|
||||
)
|
||||
cur = conn.cursor()
|
||||
cur.execute(query)
|
||||
result = cur.fetchall()
|
||||
cur.close()
|
||||
conn.close()
|
||||
return result
|
||||
|
||||
def fetchone(self, query):
|
||||
conn = psycopg2.connect(
|
||||
host=self.db_ip,
|
||||
port=self.db_port,
|
||||
user=self.db_username,
|
||||
password=self.db_password,
|
||||
database=self.db_name
|
||||
)
|
||||
cur = conn.cursor()
|
||||
cur.execute(query)
|
||||
result = cur.fetchone()
|
||||
cur.close()
|
||||
conn.close()
|
||||
return result
|
||||
|
||||
def fetchmany(self, query, size):
|
||||
conn = psycopg2.connect(
|
||||
host=self.db_ip,
|
||||
port=self.db_port,
|
||||
user=self.db_username,
|
||||
password=self.db_password,
|
||||
database=self.db_name
|
||||
)
|
||||
cur = conn.cursor()
|
||||
cur.execute(query)
|
||||
result = cur.fetchmany(size)
|
||||
cur.close()
|
||||
conn.close()
|
||||
return result
|
||||
|
||||
def execute(self, query):
|
||||
conn = psycopg2.connect(
|
||||
host=self.db_ip,
|
||||
port=self.db_port,
|
||||
user=self.db_username,
|
||||
password=self.db_password,
|
||||
database=self.db_name
|
||||
)
|
||||
cur = conn.cursor()
|
||||
cur.execute(query)
|
||||
conn.commit()
|
||||
cur.close()
|
||||
conn.close()
|
||||
|
||||
def executemany(self, query, values):
|
||||
conn = psycopg2.connect(
|
||||
host=self.db_ip,
|
||||
port=self.db_port,
|
||||
user=self.db_username,
|
||||
password=self.db_password,
|
||||
database=self.db_name
|
||||
)
|
||||
cur = conn.cursor()
|
||||
cur.executemany(query, values)
|
||||
conn.commit()
|
||||
cur.close()
|
||||
conn.close()
|
||||
|
||||
170
nogui/noguialpha.py
Normal file
170
nogui/noguialpha.py
Normal file
|
|
@ -0,0 +1,170 @@
|
|||
from getpass import getpass
|
||||
import openai
|
||||
import psycopg2
|
||||
import database.postgresql as postgresql
|
||||
|
||||
class MainScript:
|
||||
def __init__(self):
|
||||
# Set DB server Configs
|
||||
|
||||
self.db_ip = 'localhost'
|
||||
self.db_port = '32771'
|
||||
self.db_username = 'root'
|
||||
self.db_password = ''
|
||||
self.db_name = ''
|
||||
|
||||
# Set Logs
|
||||
self.logs = [{'role': 'system', 'content': 'You convert human language to sql statements. Do not add additional information to the statement. The answer should only contain a valid sql statement.'}]
|
||||
|
||||
# Set OpenAI API Key
|
||||
openai.api_key = open('apikey', 'r').read().strip('\n')
|
||||
|
||||
def dbconfig(self):
|
||||
print('Welcome to the Configuration Assistant')
|
||||
|
||||
self.db_ip = input(f'Enter the IP of the DB Server (current: {self.db_ip}): ') or self.db_ip
|
||||
self.db_port = input(f'Enter the Port of the DB Server (current: {self.db_port}): ') or self.db_port
|
||||
self.db_username = input(f'Enter the Username of the DB Server (current: {self.db_username}): ') or self.db_username
|
||||
self.db_password = input(f'Enter the Password of the DB Server (current: ***): ') or self.db_password
|
||||
self.db_name = input(f'Enter the Name of the Database (current: {self.db_name}): ') or self.db_name
|
||||
|
||||
# Test Connection
|
||||
try:
|
||||
conn = psycopg2.connect(
|
||||
host=self.db_ip,
|
||||
port=self.db_port,
|
||||
user=self.db_username,
|
||||
password=self.db_password,
|
||||
database=self.db_name
|
||||
)
|
||||
cur = conn.cursor()
|
||||
cur.execute('SELECT VERSION()')
|
||||
print(cur.fetchone())
|
||||
cur.close()
|
||||
conn.close()
|
||||
print('Connection Successful')
|
||||
except Exception as e:
|
||||
print('Connection Failed')
|
||||
print(e)
|
||||
print('\nDo you want to check the configuration and retry?')
|
||||
print('1. Yes')
|
||||
print('2. No')
|
||||
option = input('Enter your option: ')
|
||||
if option == '1':
|
||||
self.dbconfig()
|
||||
elif option == '2':
|
||||
print('Not Configuring DB Server')
|
||||
else:
|
||||
print('Invalid Option, Not Configuring DB Server')
|
||||
|
||||
|
||||
|
||||
def humantosql(self, prompt) -> str:
|
||||
print('Convert Human Language to SQL')
|
||||
prompt = {"role": "user", "content": prompt}
|
||||
|
||||
self.logs.append(prompt)
|
||||
|
||||
response = openai.ChatCompletion.create(
|
||||
model = "gpt-4",
|
||||
messages = self.logs
|
||||
)
|
||||
self.logs.append({"role": "assistant", "content": response['choices'][0]['message']['content']})
|
||||
return response['choices'][0]['message']['content']
|
||||
|
||||
def runsql(self, sql: str) -> None:
|
||||
print('Run SQL')
|
||||
print('SQL: ' + sql)
|
||||
try:
|
||||
conn = psycopg2.connect(
|
||||
host=self.db_ip,
|
||||
port=int(self.db_port),
|
||||
user=self.db_username,
|
||||
password=self.db_password,
|
||||
database=self.db_name
|
||||
)
|
||||
cur = conn.cursor()
|
||||
cur.execute(sql)
|
||||
conn.commit()
|
||||
cur.close()
|
||||
conn.close()
|
||||
print('SQL Executed Successfully')
|
||||
except Exception as e:
|
||||
print('SQL Execution Failed')
|
||||
print(e)
|
||||
print('\nDo you want to check the configuration and retry?')
|
||||
print('1. Yes')
|
||||
print('2. No')
|
||||
option = input('Enter your option: ')
|
||||
if option == '1':
|
||||
self.dbconfig()
|
||||
self.runsql(sql)
|
||||
elif option == '2':
|
||||
print('Not Executing SQL')
|
||||
else:
|
||||
print('Invalid Option, Not Executing SQL')
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main = MainScript()
|
||||
while True:
|
||||
|
||||
print('\n\n\nWelcome to the NoGUI version of the SQL Assistant')
|
||||
print('Please select an option from the list below')
|
||||
print('1. Configure the DB Server')
|
||||
print('2. Convert Human Language to SQL')
|
||||
print('3. Run SQL')
|
||||
print('4. Exit')
|
||||
|
||||
|
||||
option = input('Enter your option: ')
|
||||
if option == '1':
|
||||
main.dbconfig()
|
||||
elif option == '2':
|
||||
prompt = input('Enter your prompt: ')
|
||||
sql = main.humantosql(prompt)
|
||||
print(sql)
|
||||
|
||||
print('Do you want to execute the SQL?')
|
||||
print('1. Yes')
|
||||
print('2. No')
|
||||
print('3. Edit Statement')
|
||||
option = input('Enter your option: ')
|
||||
if option == '1':
|
||||
print('Executing SQL')
|
||||
main.runsql(sql)
|
||||
elif option == '2':
|
||||
print('Not Executing SQL')
|
||||
elif option == '3':
|
||||
retry = True
|
||||
while retry:
|
||||
print('Editing Statement')
|
||||
prompt = input('What needs Change?: ')
|
||||
sql = main.humantosql(prompt)
|
||||
print(sql)
|
||||
print('Do you want to execute the SQL?')
|
||||
print('1. Yes')
|
||||
print('2. No')
|
||||
print('3. Edit Statement')
|
||||
option = input('Enter your option: ')
|
||||
if option == '1':
|
||||
print('Executing SQL')
|
||||
main.runsql(sql)
|
||||
retry = False
|
||||
elif option == '2':
|
||||
print('Not Executing SQL')
|
||||
retry = False
|
||||
elif option == '3':
|
||||
retry = True
|
||||
|
||||
|
||||
elif option == '3':
|
||||
sql = input('Enter your SQL: ')
|
||||
main.runsql(sql)
|
||||
|
||||
elif option == '4':
|
||||
print('Exiting')
|
||||
exit()
|
||||
else:
|
||||
print('Invalid Option, Please try again')
|
||||
|
||||
Loading…
Reference in New Issue
Block a user