Ler arquivo, separar e inserir no banco

1. Ler arquivo, separar e inserir no banco

Su
Dexter25

(usa Debian)

Enviado em 04/05/2010 - 11:17h

Olá Pessoal,

Sou novata em programação em python e estou tendo dificuldades com um código para ler arquivos.
Tenho um arquivo texto que contem informações que estão separados por "," e gostaria de ler essas informações e inserir no banco.
Fiz o código para leitura do arquivo, porem não sei como fazer para separar essas informações do "," e inserir no banco separadamente. Alguém poderia me dar um caminho de como fazer isso?
Obrigado.


  


2. Re: Ler arquivo, separar e inserir no banco

fabricio erdmann
Fabricio.Er

(usa Debian)

Enviado em 08/05/2010 - 21:16h

texto = "kjhfdjkj, hfdsjhfkd, dkshfk, xvhkj"

ultimo = 0 #define uma variável para a ultima virgula encontrada

for atual in range(len(a)):
if texto[atual] == ",":
informacao = [a[c:b]] #estrai a informação do texto desde a ultima virgula ate a atual
ultimo = b+1 #marca a ultima virgula marcada

# ai é só acrescentar as linhas para colocar no banco de dados junto do if(ou chamar a função).




3. Re: Ler arquivo, separar e inserir no banco

Joao
stack_of

(usa Slackware)

Enviado em 09/05/2010 - 10:25h

Vanos supor que voce tenha o seguinte texto:

>>>linha = "A, B, C, D, E, F, G"

Usando o metodo split voce consegue extrair os elementos entre virgula retornando uma lista deles:

>>>elementos = linha.split(',')

print elementos

>>>['A', ' B', ' C', ' D', ' E', ' F', ' G']

Você pode iterar sobre os elementos da lista para inserir no banco de dados.

>>>for n in elementos:
print n
A
B
C
D
E
F
G





4. Re: Ler arquivo, separar e inserir no banco

Denis Doria
thuck

(usa Debian)

Enviado em 09/05/2010 - 17:36h

Assumindo que seu banco é um mysql:

import MySQLdb

db = MySQLdb.Connection('localhost','usuario','senha')
cursor = db.cursor()

sql = 'INSERT INTO table_name VALUES (%s, %s, %s,...)'

arq = open('arq.csv','r')
for i in arq:
cursor.execute(sql % (tuple(i.split(',')))

arq.close()
db.close()

Isso é a maneira mais simples de inserir no banco, obviamente não é a mais rápida.


5. Re: Ler arquivo, separar e inserir no banco

Su
Dexter25

(usa Debian)

Enviado em 10/05/2010 - 10:41h

Pessoal,
conseguir fazer ele separar por coluna, mas agora estou meio perdida na inserção de valores no mysql, pois minha tabela tem 4 campos: protocolo, tempo, ipOrigem e ipDestino, (o arquivo que o srcipt em python deve ler, é resultado de uma coleta de tcpDump).
O arquivo que ele estar lendo para inserir no banco, está ficando assim:

IP
103358.896871
146.134.250.2.53981
65.54.49.82.1863
IP
103359.138886
65.54.49.82.1863
146.134.250.2.53981

Só que eu só consigo fazer ele ler e inserir no banco as primeiras 4 colunas, e eu preciso que ele insira todos os dados do arquivo no banco.
Teria que fazer um laço para isso, não é?Mas aí estou ficando perdida.
Alguém teria alguma dica de como fazer esse laço?




6. Re: Ler arquivo, separar e inserir no banco

Joao
stack_of

(usa Slackware)

Enviado em 13/05/2010 - 21:22h

Se voce quer extrair diferentes "formatos" predeterminados (por exemplo o endereço IP) de um texto, melhor pensar em usar expressões regulares.

Mas, se os dados são agrupados 4 a 4, você pode iterar sobre a lista removendo slices dos dados. Um exemplo:

#!/usr/bin/python
# -*- coding: iso-8859-1 -*-

lista = ['a', 'b', 'c', 'd', 'a1', 'b1', 'c1', 'd1', 'a2', 'b2', 'c2', 'd2']
nt = len(lista)/4
i = 0
j = 4
for n in range(nt):
¬¬¬print lista[i:j]
¬¬¬i = j
¬¬¬j += 4


7. Re: Ler arquivo, separar e inserir no banco

Perfil removido
removido

(usa Nenhuma)

Enviado em 14/05/2010 - 09:44h

Ótimos exemplos , também foi muito útil pra mim






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts