Skip to content

Instantly share code, notes, and snippets.

@teddiur
Created September 25, 2023 01:05
Show Gist options
  • Save teddiur/083ca67c93dfa12af923543fff5fbd88 to your computer and use it in GitHub Desktop.
Save teddiur/083ca67c93dfa12af923543fff5fbd88 to your computer and use it in GitHub Desktop.
from flask import Flask, request, jsonify
import sqlite3
import PyPDF2
app = Flask(__name__)
# Função para conectar ao banco de dados SQLite
def connect_db():
return sqlite3.connect('documents.db')
# Rota para criar a tabela no banco de dados (opcional)
@app.route('/create_table', methods=['GET'])
def create_table():
conn = connect_db()
cursor = conn.cursor()
cursor.execute('''
CREATE TABLE IF NOT EXISTS pdf_documents (
id INTEGER PRIMARY KEY AUTOINCREMENT,
filename TEXT NOT NULL,
content TEXT NOT NULL
)
''')
conn.commit()
conn.close()
return 'Tabela criada com sucesso'
# Rota para fazer upload e processar um documento PDF
@app.route('/upload_pdf', methods=['POST'])
def upload_pdf():
uploaded_file = request.files['file']
if uploaded_file.filename != '':
pdf_reader = PyPDF2.PdfReader(uploaded_file)
text = ''
for page_num in range(len(pdf_reader.pages)):
text += pdf_reader.pages[page_num].extract_text()
conn = connect_db()
cursor = conn.cursor()
cursor.execute('INSERT INTO pdf_documents (filename, content) VALUES (?, ?)', (uploaded_file.filename, text))
a = cursor.execute('SELECT * FROM pdf_documents')
conn.commit()
print(a.fetchall())
conn.close()
return 'Documento PDF processado e armazenado com sucesso'
else:
return 'Nenhum arquivo PDF enviado'
# Rota para listar todos os documentos armazenados
@app.route('/get_documents', methods=['GET'])
def get_documents():
conn = connect_db()
cursor = conn.cursor()
cursor.execute('SELECT * FROM pdf_documents')
documents = cursor.fetchall()
conn.close()
document_list = []
for doc in documents:
document_dict = {
'id': doc[0],
'filename': doc[1],
'content': doc[2]
}
document_list.append(document_dict)
return jsonify(document_list)
if __name__ == '__main__':
app.run(debug=True)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment