Guest --itibere -- Postado Maio 30, 2007 Denunciar Share Postado Maio 30, 2007 Olá para todos, sou novo na progrmação python e estou com problemas nessa função (dictfetchall())uso o mysql com o MySQLdb, codi gop que uso é essa abaixo:import MySQLdbconn=MySQLdb.connect("servidor","user","senha")conn.select_db("base")query=conn.cursor()query.execute("select * from tbl")rs = query.dictfetchall() # busca todas as linhas,for linha in query: print linha[0] # valor da primeira colunase eu usar "rs = query.fetchall()" , funciona normalmenete mas e se usar a linha "rs = query.dictfetchall() " da o seguibnte erro:AttributeError: 'Cursor' object has no attribute 'dictfetchall'Traceback (innermost last):File "C:\itibere\progetoPy\conexaodb.py", line 1, in ? import MySQLdbFile "C:\itibere\progetoPy\conexaodb.py", line 9, in ? rs = query.dictfetchall() # busca todas as linhas,Onde está o erro? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Kakao Postado Maio 30, 2007 Denunciar Share Postado Maio 30, 2007 Eu uso o postgres e não tenho a documentação do mysqldb, mas a mensagem de erro é clara: não existe o método dictfetchall. Poste a parte da documentação que mostra este método. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest --itibere -- Postado Maio 30, 2007 Denunciar Share Postado Maio 30, 2007 Eu uso o postgres e não tenho a documentação do mysqldb, mas a mensagem de erro é clara: não existe o método dictfetchall. Poste a parte da documentação que mostra este método. de uma olhada no link:http://www.vivaolinux.com.br/dicas/verDica.php?codigo=6038 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Kakao Postado Maio 30, 2007 Denunciar Share Postado Maio 30, 2007 Este link não é o da documentação do mysqldb.A especificação da API não inclui um método dictfetchall e provavelmente o mysqldb não o implementa:http://www.python.org/dev/peps/pep-0249/O psycopg2, uma das interfaces para o postgresql, implementa DictConnection e DictCursor no módulo extras. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest --itibere -- Postado Maio 30, 2007 Denunciar Share Postado Maio 30, 2007 Este link não é o da documentação do mysqldb.A especificação da API não inclui um método dictfetchall e provavelmente o mysqldb não o implementa:http://www.python.org/dev/peps/pep-0249/O psycopg2, uma das interfaces para o postgresql, implementa DictConnection e DictCursor no módulo extras.Nesse caso, como faço para usar no fetchall, o nome do campo ao invés do seu index, digo isso porque estou acostumando a programar com php, e sempre uso o nome do campo, por ser mais amigave.ou não tem essa opção no python.Abraços Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Kakao Postado Maio 30, 2007 Denunciar Share Postado Maio 30, 2007 Não é o python que não tem esta opcão, é o mysqldb que não tem. O psycopg2 por exemplo tem.Mas eu achei uma função que eu acho que resolve esta lacuna no mysqldb:http://mail.python.org/pipermail/python-li...ril/317035.htmlEla recebe um cursor como argumento e devolve uma lista de dicionários. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest --itibere -- Postado Maio 30, 2007 Denunciar Share Postado Maio 30, 2007 Obrigado pela ajuda KaKao, provavelmente o exemplo que pequei usava essa mesma clase que você me enviou, e ocara so não avisou que não fazia parte do MySQLdb, por isso a confusão.Abraços, vlu mesmo. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest --itibere -- Postado Maio 30, 2007 Denunciar Share Postado Maio 30, 2007 Desculpe, sei que já to ficanado chato, mas é que preciso fazer o sistema funcionar e aindo não sei bem como programar em python, eu fiz assim e fucionou normalmente:import MySQLdb #importa a calse que mnipula o mysqldef dictfetchall(cursor): '''Takes a MySQLdb cursor and returns the rows as dictionaries.''' col_names = [ d[0] for d in cursor.description ] return [ dict(zip(col_names, row)) for row in query.fetchall() ]conn=MySQLdb.connect("x","xt","x")conn.select_db("x")query=conn.cursor()query.execute("select * from tblplanos")rs = dictfetchall(query) # busca todas as linhas,print (rs[0])isso retornou:Evaluating 15 lines of code...{'status': 'a', 'id_plano': 1L, 'dtaEcerramento': datetime.date(2007, 5, 30), 'tituloPlano': 'este \xe9 s\xf3 um teste', 'id_sac_sap': 7L}, que esta correto , mas se substituo a linha print (rs[0]) para print (rs[status]), por exemplo da o erro:NameError: name 'status' is not definedTraceback (innermost last):File "C:\itibere\progetoPy\conexaodb.py", line 1, in ? import MySQLdb #importa a calse que mnipula o mysqlFile "C:\itibere\progetoPy\conexaodb.py", line 14, in ? print (rs[status]), agora acho que é falha minha. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Kakao Postado Maio 30, 2007 Denunciar Share Postado Maio 30, 2007 Tente print rs[0]['status'] Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest --itibere -- Postado Maio 30, 2007 Denunciar Share Postado Maio 30, 2007 Tente print rs[0]['status']Obrigado, agora funcionou perfeitoBrigadao pela ajuda, abraços. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest Visitante Postado Novembro 4, 2008 Denunciar Share Postado Novembro 4, 2008 Value.. me ajudou também........ Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Guest --itibere --
Olá para todos, sou novo na progrmação python e estou com problemas nessa função (dictfetchall())
uso o mysql com o MySQLdb, codi gop que uso é essa abaixo:
import MySQLdb
conn=MySQLdb.connect("servidor","user","senha")
conn.select_db("base")
query=conn.cursor()
query.execute("select * from tbl")
rs = query.dictfetchall() # busca todas as linhas,
for linha in query:
print linha[0] # valor da primeira coluna
se eu usar "rs = query.fetchall()" , funciona normalmenete mas e se usar a linha "rs = query.dictfetchall() " da o seguibnte erro:
AttributeError: 'Cursor' object has no attribute 'dictfetchall'
Traceback (innermost last):
File "C:\itibere\progetoPy\conexaodb.py", line 1, in ?
import MySQLdb
File "C:\itibere\progetoPy\conexaodb.py", line 9, in ?
rs = query.dictfetchall() # busca todas as linhas,
Onde está o erro?
Link para o comentário
Compartilhar em outros sites
10 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.