Ir para conteúdo


Revista PROGRAMAR – Edição 46 (Setembro 2014): Download já disponível!

- - - - -

[Python] Ligação a bases de dados MySQL

python mysql

  • Por favor inicie sessão para responder
12 respostas a este tópico

#1 PYPT

PYPT

    Try-Catch User

  • Membro
  • PipPipPipPip
  • 287 mensagens

Publicado 15 de Junho de 2007 - 17:06

Para quem tem problemas em juntar Python + MySQL aqui vai um código fonte para resolver o seu problema:

Código (Python):
#!/usr/bin/python
# Importa o módulo do MySQL
import MySQLdb
# Conectando
db = MySQLdb.connect(host="ipOuNomeServidor",user="usuariobanco", passwd="senha", db="nomeDaBase")
# Cria um cursor
cursor = db.cursor()
# Executa o SQL
cursor.execute("SELECT * FROM tabela")
# Pega o resultset como uma tupla
result = cursor.fetchall()
# Navega pelo resultset
for record in result:  print record[0] , "-->", record[1]


#2 David Pintassilgo

David Pintassilgo

    Stack Overflow

  • Staff
  • 8537 mensagens

Publicado 16 de Junho de 2007 - 18:12

Boas, separei este post pois acho que é preciso aqui um esclarecimento relativamente a umas cenas,

Para já, tenho um problema, isso não funciona aqui :S Vejam lá se alguem me ocnsegue ajudar a perceber o problema:

Código (Python):
Traceback (most recent call last):
  File "/home/david/python/ligacaobdonline.py", line 5, in <module>
    db = MySQLdb.connect(host="pintassilgo.com",user="pintassi_py", passwd="*******", db="pintassi_py")
  File "/usr/lib/python2.5/site-packages/MySQLdb/__init__.py", line 75, in Connect
    return Connection(*args, **kwargs)
  File "/usr/lib/python2.5/site-packages/MySQLdb/connections.py", line 164, in __init__
    super(Connection, self).__init__(*args, **kwargs2)
_mysql_exceptions.OperationalError: (2003, "Can't connect to MySQL server on 'pintassilgo.com' (111)")


#3 Triton

Triton

    Stack Overflow

  • Membro
  • PipPipPipPipPipPipPip
  • 8490 mensagens

Publicado 16 de Junho de 2007 - 18:15

Tens as permissões de acesso à base de dados definidas correctamente?

#4 David Pintassilgo

David Pintassilgo

    Stack Overflow

  • Staff
  • 8537 mensagens

Publicado 16 de Junho de 2007 - 18:50

É pá,.. penso que sim.
Criei um utilizador, uma BD e adicionei aquele utilizador aquela bd tudo pelo cpanel e pronto. Acho que nao era preciso fazer mais nada, correcto?

#5 pedrotuga

pedrotuga

    Stack Overflow

  • Membro
  • PipPipPipPipPipPipPip
  • 7517 mensagens

Publicado 17 de Junho de 2007 - 13:33

O host onde tens a base de dados provavelmente não permite ligações remotas. Normalmente têm essa configuração por razões de segurança.

Se tiveres acesso SSH cria um tunel.
Tens aqui as instruções de como o fazer:
http://wiki.dreamhost.com/Mysql#Using_SSH
atenção que este documento foi escrito especificamente para clientes da dreamhost, tens que olhar para o comando com atenção para ver o que tens que substituir no teu caso.

procura mais documentação sobre isso
http://search.yahoo.com/search?p=mysql+ssh+tunnel&ei=UTF-8&fr=moz2
desta vez usei o yahoo, deu-me na cabeça

#6 David Pintassilgo

David Pintassilgo

    Stack Overflow

  • Staff
  • 8537 mensagens

Publicado 17 de Junho de 2007 - 14:05

As configurações do host supostamente estão mudadas por forma a permitir isso. que por defeito, sim , estava desactivado.

#7 pedrotuga

pedrotuga

    Stack Overflow

  • Membro
  • PipPipPipPipPipPipPip
  • 7517 mensagens

Publicado 17 de Junho de 2007 - 14:07

experimenta ligar-te pela consola, a shell do linux, não a consola do python.
Assim podes testar se as tus credenciais sao válidas ou não.

#8 David Pintassilgo

David Pintassilgo

    Stack Overflow

  • Staff
  • 8537 mensagens

Publicado 17 de Junho de 2007 - 14:09

Eu com o putty consigo-me ligar ao meu host.

Mas e depois lá o que fasso para ver se está tudo ok ou nao?

#9 Triton

Triton

    Stack Overflow

  • Membro
  • PipPipPipPipPipPipPip
  • 8490 mensagens

Publicado 17 de Junho de 2007 - 14:10

Ver Mensagemd_pintassilgo, em 17 de Junho de 2007 - 14:09, disse:

Eu com o putty consigo-me ligar ao meu host.

Mas e depois lá o que fasso para ver se está tudo ok ou nao?


O putty utiliza o protocolo ssh, o que tu tens de ver é se te consegues ligar à base de dados através de outro método que não o Python, por exemplo PHP ou pela shell do MySQL.

#10 David Pintassilgo

David Pintassilgo

    Stack Overflow

  • Staff
  • 8537 mensagens

Publicado 17 de Junho de 2007 - 14:11

hummm,..... para ver se o problema é do codigo, ou se é do host que nao está a aceitar, boa! :)

Agora deixa lá ver se me safo...:S


edit:

Bem,.. eu não precebo grande coisa disto mas o problema deve de ser mesmo o host que não está a aceitar a ligação, tentei meter um codigo em php a correr noutro lado e não conseguiu ligar á BD.

Alguma sugestão?

#11 pedrotuga

pedrotuga

    Stack Overflow

  • Membro
  • PipPipPipPipPipPipPip
  • 7517 mensagens

Publicado 17 de Junho de 2007 - 16:54

oh david, n estvas a usar linux?

abre uma consola e liga-te ao mysql... ve aqui as intruções em portugues no manual do mysql
http://dev.mysql.com/doc/refman/4.1/pt/connecting-disconnecting.html

se estiveres no windows, pega no putty, liga-te a outro servidor que nao aquele onde tenhas a bd e usa as mesmas instruções do link acima

#12 David Pintassilgo

David Pintassilgo

    Stack Overflow

  • Staff
  • 8537 mensagens

Publicado 17 de Junho de 2007 - 16:58

PERA! :D  Já está!

Acabei agora de meter isto a bulir.

confirma-se que o problema é no meu host que não está a aceitar a ligação, criei uma cena em www.freemysql.net e deu para me ligar com o codigo tal e qual como está, ou seja, não há problema nenhum com o código! :D Só falta ocnseguir resolver o problema no meu host, mas para já isso não é problema, já tenho onde "brincar" com isto! :D


edit:
Entretanto tive a ver isso que me indicas.te.
Sim, eu só tenho linux, mas não sabia como é que isso funcionava, entretnato ja estou a instalar o mysql-cliente para tentar ligar ás bd
Obrigado pelo link! :D


Confirma-se:
ERROR 2003 (HY000): Can't connect to MySQL server on 'pintassilgo.com' (111)

Mas na cena do freemysql.net já dá! :)


ENA QUE FIXE! Mais uma cena muita ninja que aprendi! eheh  :):P

#13 takersdown

takersdown

    null

  • Novo Membro
  • Pip
  • 7 mensagens

Publicado 03 de Novembro de 2013 - 09:58

Como posso colocar no meu formulario dois campos de modo a pesquisar na base dados se existe devolve esse registo?

Editado por takersdown, 03 de Novembro de 2013 - 12:40.