Problemas ao inserir com SQLAlchemy
Boa tarde,
estou trabalhando numa aplicação aqui no serviço, onde eu preciso ler arquivos em um diretório e gravar o conteúdo das linhas no banco de dados.
O arquivo contém linhas mais ou menos da forma abaixo:
AAAAA|120|20121108|20121108
00000|00089109420510001|01071231301548920|00042081739161509023|20121108112203
01000|01071231301549640|258,77|0,00|0,00|258,77|20121120|20121120|258,77
01500|201101|2749,30
01501|201101|2749,30
01502|201101|0,00
01500|201102|4176,15
01501|201102|4176,15
01502|201102|0,00
......continua
Como vcs podem ver a linha que inicia com 01500 se repete, e é justamente nela que dá o problema. As linhas 00000 e 01000 grava normal, pois elas não se repetem, mas a linha 01500 só insere a primeira, na próxima dá o erro:
*state.session_id, self.hash_key))
sqlalchemy.exc.InvalidRequestError: Object '' is already attached to session '3' (this is '4')*
Eu acredito que tá dando este problema porque estou tentando gravar o mesmo objeto novamente, mas não estou sabendo como proceder. Alguém pode me dar um força?
Segue o código:
def importFile(self, url):
fileImport = open(url, 'r')
lines = fileImport.readlines()
fileImport.close()
pgdasd = Pgdasd()
banco = Banco()
i = 0
while i < len(lines):
line = lines[i].replace("\n","").replace(",",".").split("|") # ler a linha do arquivo, retira os \n e troca , por .
if line[0] == '00000':
pgdasd = pgdasd.setPgdasd_00000(line)#Coloca os valores da linha no objeto
banco.insere(pgdasd)
if line[0] == '01000':
pgdasd.Pgdasd_01000 = pgdasd.Pgdasd_01000.setPgdasd_01000(line) #Coloca os valores da linha no objeto
banco.insere(pgdasd.Pgdasd_01000)
if line[0] == '01500':
pgdasd.Pgdasd_01500 = pgdasd.Pgdasd_01500.setPgdasd_01500(line) #Coloca os valores da linha no objeto
banco.insereLista(lista_01500)
i = i + 1
class Banco():
def insere(self, pgdasd):
engine = create_engine('oracle://ssss:ddddd@xxxx')
Session = sessionmaker(bind=engine)
session = Session()
session.add(pgdasd)
session.commit()
Agradeço a ajuda!
T+
Discussão (4)
Carregando comentários...