Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Dúvida Banco Config Banco de dados- Flask

Gente... Criei uma aplicação Flask bem simples e utilizei o SQLITE 3, só que usei de uma forma um pouco diferente, sem o SQL ALCHEMY. Só que ele me gerou um documento "banco.db" dentro do diretório do projeto. Localmente roda muito bem. Minha dúvida é, o que fazer na hora do Deploy? No Django tempos o comando migrate e makemigrations que sobe todas as tabelas criadas pro servidor em si.

E se o banco tiver senha?

Como eu faria para configurar isso no servidor?

Trecho do código SQL:

class ListaUser:
    def __init__(self,id,user,pw):
        self.id = id
        self.user = user
        self.pw = pw

class Database():
    def __init__(self,db_name):     
        self.db_name = db_name     

    def iniciaBanco(self):                   
        con = sqlite3.connect(self.db_name)
        print(self.db_name)
        return con


class User(): 

    def __init__(self,db_name):
        self.db_name = db_name
        self.con = sqlite3.connect(self.db_name)
        self.cur = self.con.cursor()

    def createTable(self):

        self.con.cursor().execute(
            'CREATE TABLE IF NOT EXISTS tb_usuario (id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,\
            user VARCHAR(15) NOT NULL,\
            password VARCHAR(100) NOT NULL)')        

    def insertUser(self,user,pw):
        self.user = user
        self.pw =pw 

        self.con.cursor().execute("INSERT INTO 'tb_usuario'\
            (user,password) VALUES ('{}','{}')".format(self.user,self.pw))
        self.con.commit()
        self.cur.close()
        self.con.close()

Trecho das ROTAS:

from flask import Flask, render_template,request,redirect,session,flash
from flask.globals import g
from database.models import *


#Application config
app = Flask(__name__,template_folder='../assets/templates',static_folder='../assets/static')
app.secret_key='segredo'

db = Database('dao.db')


@app.route("/cadastro", methods=['POST'])
def cadastro():
    """ Rotas de acesso ao banco de autenticação do portal"""
    if request.method=='POST':

        user = request.form['home_user']
        pw = request.form['home_password']

        if user =='' or pw=='':
            return redirect('/')
        else:
            db_user =User(db.db_name)
            db_user.createTable()    
            db_user.insertUser(user,pw)  

        return redirect('/views')

    else:

        return redirect('/')

Segue o git: https://github.com/Raul-Pinheiro/projetoPessoal-appEmFlask

1 resposta
solução!

A solução foi a seguinte:

pip install pg8000

import pg8000 

class ListaUser:
    def __init__(self,id,user,pw):
        self.id = id
        self.user = user
        self.pw = pw

class ConnectUserTable():
    def __init__(self):   
        self.con = pg8000.connect("user",host="localhost",database="dbTeste",\            port=5432,password="password",unix_sock=None,ssl_context=None,timeout=None)
        self.cur = self.con.cursor()

    def createTable(self):        
        self.cur.execute("CREATE TABLE IF NOT EXISTS tb_clientes (id_user SERIAL PRIMARY KEY,\
            usuario VARCHAR(15) NOT NULL, senha VARCHAR(15) NOT NULL)")
        self.con.commit()


    def insertUser(self,user,pw):
        self.user = user
        self.pw = pw
        self.cur.execute("INSERT INTO tb_clientes (usuario,senha) VALUES ('{}','{}')".format(self.user,self.pw)) 
        self.con.commit()
        self.cur.close()
        self.con.close()



    def selectUsers(self):

        self.cur.execute('SELECT * FROM tb_clientes')

        usuarios =[]
        for row in self.cur.fetchall():

            linha = ListaUser(row[0],row[1],row[2])
            usuarios.append(linha)
        return usuarios

    def deleteUsers(self,id):       
        self.id =id 
        self.cur.execute("DELETE FROM tb_clientes WHERE id_user={}".format(self.id))
        self.con.commit()

    def updateUsers(self,id,user,pw):
        self.id=id
        self.user=user
        self.pw=pw

        self.cur.execute("""
        UPDATE 'tb_clientes' 
        SET usuario =?, senha =?
        WHERE id_user = ?
        """,(self.user,self.pw,self.id))
        self.con.commit()

    def pegaUserPorID(self,id):
        self.id = id
        self.cur.execute('SELECT * FROM tb_clientes WHERE id_user = {}'.format(self.id))
        usuario = []

        for item in self.cur.fetchone():
            usuario.append(item)

        return usuario