Passar variável Python para Variável MySql

15 views
Skip to first unread message

Seomis Adof

unread,
Apr 30, 2017, 5:31:31 PM4/30/17
to Python Brasil

Olá!

Alguém sabe como faço para passar uma variável do Python para uma variável MySql?

Exemplo:


Tenho uma variável no python chamada id_user e gostaria de passar essa variável para uma variável MySql, estou usando assim:


   #Variável Python

   id_user = conteudo[posicaoinicio_nun:posicaofim_nun]


    cursor.execute("SET @id_user =  id_user")
    cursor
.execute("SELECT aberto_por FROM ocorrencias WHERE numero = @id_user")


Mas não da certo...


O erro está na linha cursor.execute("SET @id_user =  id_user ") porque a variável @id_user do MySql não está recebendo o valor da variável id_user do Python


Alguém sabe com faço isso?

 

Desde já agradeço a ajuda.

Junior Phanter

unread,
Apr 30, 2017, 7:33:01 PM4/30/17
to python...@googlegroups.com
cursor.execute("SET @id_user =  %s" %id_user)

--
--
------------------------------------
Grupo Python-Brasil
http://www.python.org.br/wiki/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:
python-brasil+unsubscribe@googlegroups.com

---
Você recebeu essa mensagem porque está inscrito no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasil+unsubscribe@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.

Iuri

unread,
Apr 30, 2017, 8:14:53 PM4/30/17
to python...@googlegroups.com
cursor.execute("SET @id_user =  %s", id_user)

Assim o driver trata o parâmetro corretamente.

Seomis Adof

unread,
Apr 30, 2017, 10:38:35 PM4/30/17
to Python Brasil
Perfeito, funcionou! Porem, esse método só aceita variáveis com valores sem espaços ou caracteres especiais, por exemplo:

data = 2017-04-30 23:33:50

cursor.execute("SET @data =  %s" %data)

da um erro de sintaxe no sql conforme abaixo, mas quando eu substituo o ":" por "-" e retiro os espaços da data, funciona, mas o formado da data tem q ser como está, por padrão no banco.

Como será q se resolve isso?


Traceback (most recent call last):
  File "\\Induscar.lan.br\arquivos\CPD\Colaboradores\André Simões\Extras\python\teste_email.py", line 53, in <module>
    cursor.execute("SET @data = %s" %data)
  File "C:\Python27\lib\site-packages\MySQLdb\cursors.py", line 250, in execute
    self.errorhandler(self, exc, value)
  File "C:\Python27\lib\site-packages\MySQLdb\connections.py", line 42, in defaulterrorhandler
    raise errorvalue
ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '23:35:01' at line 1")


Em domingo, 30 de abril de 2017 20:33:01 UTC-3, Junior Phanter escreveu:
cursor.execute("SET @id_user =  %s" %id_user)
Em 30 de abril de 2017 18:31, Seomis Adof <seomi...@gmail.com> escreveu:

Olá!

Alguém sabe como faço para passar uma variável do Python para uma variável MySql?

Exemplo:


Tenho uma variável no python chamada id_user e gostaria de passar essa variável para uma variável MySql, estou usando assim:


   #Variável Python

   id_user = conteudo[posicaoinicio_nun:posicaofim_nun]


    cursor.execute("SET @id_user =  id_user")
    cursor
.execute("SELECT aberto_por FROM ocorrencias WHERE numero = @id_user")


Mas não da certo...


O erro está na linha cursor.execute("SET @id_user =  id_user ") porque a variável @id_user do MySql não está recebendo o valor da variável id_user do Python


Alguém sabe com faço isso?

 

Desde já agradeço a ajuda.

--
--
------------------------------------
Grupo Python-Brasil
http://www.python.org.br/wiki/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:


---
Você recebeu essa mensagem porque está inscrito no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasi...@googlegroups.com.

Alysson Bruno

unread,
May 1, 2017, 8:01:11 AM5/1/17
to python-brasil
tenta assim:


cursor.execute("SET @id_user =  '%s'" %id_user)

paz e amor (love and peace),

Alysson Bruno
===============================================
Palmas(TO)
Brasil


=================================================================
Meu alterego Escritor:

Leia alguns contos que escrevo, não esqueça de me dar sua opinião: http://goo.gl/Wjn4p

=================================================================



---
Você recebeu essa mensagem porque está inscrito no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasil+unsubscribe@googlegroups.com.

Seomis Adof

unread,
May 1, 2017, 8:56:56 AM5/1/17
to Python Brasil
Perfeito funcionou corretamente!

Vc é foda mesmo!

E vou ler seus contos sim, pode deixar!

Muito obrigado.

Abelardo Mota

unread,
May 1, 2017, 10:01:47 AM5/1/17
to Python Brasil
Vê: http://stackoverflow.com/a/7929438/3662965

To avoid injections, use execute with %s in place of each variable, then pass the value via a list or tuple as the second parameter of execute
Reply all
Reply to author
Forward
0 new messages