Qual a diferença?
Infelizmente o pacote normal não consigui instalar na minha maquina, só o binary, alguém poderia me explicar a diferença?
psycopg vs psycopg-binary
Qual a diferença?
Infelizmente o pacote normal não consigui instalar na minha maquina, só o binary, alguém poderia me explicar a diferença?
psycopg vs psycopg-binary
Mesmo assim nao funciona na minha maquina. Traceback (most recent call last): File "/Users/gfmolon/PycharmProjects/vinhedos_postgres/funcoes_db.py", line 1, in import psycopg ModuleNotFoundError: No module named 'psycopg'
import psycopg
def inserir_db(a, b):
conn = psycopg.connect("dbname=costumer user=postgres")
c = conn.cursor()
x = conn.cursor() # imagem
c.execute("INSERT INTO uvas VALUES (?,?)", (a, b))
x.execute("SELECT MAX(rowid),* FROM uvas")
x2 = x.fetchall()
conn.commit()
conn.close()
return x2[0][0] # retorna query pra descobrir id da imagem ao criar
Consegui desinstalando tudo e instalando novamente , mas agora nao sei conectar no banco..
psycopg2.OperationalError psycopg2.OperationalError: fe_sendauth: no password supplied
Li na internet algo sobre editar o pg_hba.conf, precisa mesmo?
Consegui crirar
def mostrar_db():
conn = psycopg2.connect("dbname=postgres user=postgres password=senha")
c = conn.cursor()
c.execute("SELECT rowid,* from uvas")
conexao_mostrar = c.fetchall()
conn.commit()
conn.close()
return conexao_mostrar
Ta dando o erro:
psycopg2.errors.UndefinedTable psycopg2.errors.UndefinedTable: relation "uvas" does not exist LINE 1: SELECT rowid,* from uvas ^
Oiii Guilherme, como você está? Espero que esteja bem ^-^
Peço desculpas pela demora em obter um retorno.
A psycopg2 possui dependência de uma biblioteca chamada libssl
e em alguns casos, essa biblioteca sofre conflitos com programas em nosso sistema operacional que também a utiliza, o que resulta em erro de instalação. Para resolver isso a psycopg2-binary foi criado, para que reúna um pacote pré-compilado com todas as bibliotecas necessárias da psycopg2 para evitar conflitos como este.
O comportamento da psycopg2-binary é idêntico ao da psycopg2, o nome diferente é usado apenas na instalação, mas é importado da mesma forma que o principal: import psycopg2
.
O erro: psycopg2.errors.UndefinedTable psycopg2.errors.UndefinedTable: relation "uvas" does not exist LINE 1: SELECT rowid,* from uvas ^
está dizendo que a tabela uvas não existe em seu banco de dados. Verifique por favor se esta tabela foi criada. E caso não exista, você pode utilizar o comando abaixo para criá-la diretamente no banco de dados, por exemplo:
CREATE TABLE uvas (id serial PRIMARY KEY, vendedor varchar(50), preco real);
Ou então, utilizar o código a seguir para criá-la através de código python:
c.execute("CREATE TABLE uvas (id serial PRIMARY KEY, vendedor varchar(50), preco real);")
conn.commit()
conn.close()
Outro detalhe, é que o ROWID não existe no PostgreSQL, um comando similar é o CTID, que também retornará um identificador da linha, por exemplo:
SELECT CTID , * from uvas
Nos retornará a seguinte tabela:
Porém, a documentação do PostgreSQL alerta que o CTID é inútil como um identificador de linha a longo prazo, pois ele mudará a cada vez que for atualizado o registro. Uma solução para isso é criar uma coluna e definir os identificadores manualmente.
Espero ter ajudado! Qualquer dúvida estou por aqui.
Abraços e bons estudos!