Compare commits
No commits in common. "a08fd5f98b726dee011d3520b80da72e2ebd5744" and "1edf47346fc209776631552a67a144eae9e0be07" have entirely different histories.
a08fd5f98b
...
1edf47346f
72
main.py
72
main.py
|
@ -2,65 +2,37 @@ import os
|
||||||
|
|
||||||
from table import Table
|
from table import Table
|
||||||
from sql import SQL
|
from sql import SQL
|
||||||
import mysql.connector
|
|
||||||
from mysql.connector import Error
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
print("Bem-vindo!")
|
print("Bem vindo ao SGBD")
|
||||||
print("Deseja utilizar um banco de dados (BD) ou um arquivo .csv (CSV)?")
|
print("Digite a pasta onde está os arquivos CSV:")
|
||||||
escolha = input()
|
#csv_folder = input()
|
||||||
|
csv_folder = "./source"
|
||||||
|
|
||||||
if escolha == "CSV":
|
tables = {}
|
||||||
print("Digite a pasta onde estão os arquivos CSV:")
|
|
||||||
#csv_folder = input()
|
|
||||||
csv_folder = "./source"
|
|
||||||
|
|
||||||
tables = {}
|
# get all csv files in the folder
|
||||||
|
for file in os.listdir(csv_folder):
|
||||||
|
if file.endswith(".csv"):
|
||||||
|
table_name = file.split(".")[0]
|
||||||
|
table = Table(table_name)
|
||||||
|
table.load_from_csv(f"{csv_folder}/{file}")
|
||||||
|
tables[table_name] = table
|
||||||
|
|
||||||
# Seleciona todos o csv presentes na pasta
|
print("Tabelas carregadas:")
|
||||||
for file in os.listdir(csv_folder):
|
print(tables.keys())
|
||||||
if file.endswith(".csv"):
|
|
||||||
table_name = file.split(".")[0]
|
|
||||||
table = Table(table_name)
|
|
||||||
table.load_from_csv(f"{csv_folder}/{file}")
|
|
||||||
tables[table_name] = table
|
|
||||||
|
|
||||||
print("Tabelas carregadas:")
|
while True:
|
||||||
print(tables.keys())
|
print("Digite a query [0 para sair]:")
|
||||||
|
query = input()
|
||||||
|
|
||||||
while True:
|
if query == "0":
|
||||||
print("Digite a query [0 para sair]:")
|
break
|
||||||
query = input()
|
|
||||||
|
|
||||||
if query == "0":
|
sql = SQL(tables, query)
|
||||||
break
|
sql.execute()
|
||||||
|
|
||||||
sql = SQL(tables, query)
|
print()
|
||||||
sql.execute()
|
|
||||||
|
|
||||||
print()
|
|
||||||
|
|
||||||
elif escolha == "BD":
|
|
||||||
try:
|
|
||||||
connection = mysql.connector.connect(host='localhost',
|
|
||||||
database='employees',
|
|
||||||
user='employeesdb',
|
|
||||||
password='Employees1!')
|
|
||||||
|
|
||||||
if connection.is_connected():
|
|
||||||
print("Conectado ao employees-db")
|
|
||||||
cursor = connection.cursor()
|
|
||||||
|
|
||||||
except Error as e:
|
|
||||||
print("Error while connecting to MySQL", e)
|
|
||||||
finally:
|
|
||||||
if connection.is_connected():
|
|
||||||
cursor.close()
|
|
||||||
connection.close()
|
|
||||||
print("MySQL connection is closed")
|
|
||||||
|
|
||||||
else:
|
|
||||||
print("Fora do intervalo!")
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
main()
|
main()
|
23
sql.py
23
sql.py
|
@ -1,32 +1,35 @@
|
||||||
|
from table import Table
|
||||||
|
|
||||||
class SQL:
|
class SQL:
|
||||||
def __init__(self, tables: dict, query: str) -> None:
|
def __init__(self, tables: dict, query: str) -> None:
|
||||||
self.tables = tables
|
self.tables = tables
|
||||||
self.query = query.replace(";", "")
|
self.query = query.replace(";", "")
|
||||||
|
|
||||||
# ISCOLHE * DE tabela
|
def __str__(self) -> str:
|
||||||
|
pass
|
||||||
|
|
||||||
|
# SELECIONAR * DE tabela
|
||||||
def execute(self):
|
def execute(self):
|
||||||
query_parts = self.query.split(" ")
|
query_parts = self.query.split(" ")
|
||||||
|
|
||||||
if query_parts[0] == "ISCOLHE":
|
if query_parts[0] == "SELECIONAR":
|
||||||
self.select(query_parts)
|
self.select(query_parts)
|
||||||
else:
|
else:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
# ISCOLHE * DE tabela AJUNTAR tabela2 EM coluna;
|
# SELECIONAR * DE tabela JUNTAR tabela2 coluna ONDE coluna = valor
|
||||||
# ISCOLHE * DE tabela DONDE coluna = valor;
|
|
||||||
def select(self, query_parts: list) -> None:
|
def select(self, query_parts: list) -> None:
|
||||||
where_filter = None
|
where_filter = None
|
||||||
join_stmt = None
|
join_stmt = None
|
||||||
|
|
||||||
if "AJUNTAR" in query_parts:
|
if "JUNTAR" in query_parts:
|
||||||
index = query_parts.index("AJUNTAR")
|
index = query_parts.index("JUNTAR")
|
||||||
join_table = query_parts[index + 1]
|
join_table = query_parts[index + 1]
|
||||||
join_operator = query_parts[index + 2] # EM -> estetico
|
join_column = query_parts[index + 2]
|
||||||
join_column = query_parts[index + 3]
|
|
||||||
join_stmt = [self.tables[join_table], join_column]
|
join_stmt = [self.tables[join_table], join_column]
|
||||||
|
|
||||||
if "DONDE" in query_parts:
|
if "ONDE" in query_parts:
|
||||||
index = query_parts.index("DONDE")
|
index = query_parts.index("ONDE")
|
||||||
where_filter_column = query_parts[index + 1]
|
where_filter_column = query_parts[index + 1]
|
||||||
where_filter_operator = query_parts[index + 2]
|
where_filter_operator = query_parts[index + 2]
|
||||||
where_filter_value = query_parts[index + 3]
|
where_filter_value = query_parts[index + 3]
|
||||||
|
|
2
table.py
2
table.py
|
@ -14,7 +14,7 @@ class Table:
|
||||||
with open(csv_file, 'r') as f:
|
with open(csv_file, 'r') as f:
|
||||||
reader = f.read().splitlines()
|
reader = f.read().splitlines()
|
||||||
|
|
||||||
# Primeira linha contêm o nome das colunas
|
# First line is the column names
|
||||||
self.columns = reader[0].split(',')
|
self.columns = reader[0].split(',')
|
||||||
reader.pop(0)
|
reader.pop(0)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue