Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 14, 2013 17:29:53

Inok
Зарегистрирован: 2013-09-11
Сообщения: 41
Репутация: +  -1  -
Профиль   Отправить e-mail  

Select по данным из файла из Python 3.3 Решено

дЕнь добрый.
такая ситуация по раздельному распарсивание файла и селект по базе работают. когда же пытаюсь обьединить, нет.

 import cx_Oracle
import string
db = cx_Oracle.connect ('A/11111111@En')
ENcursor = db.cursor()
def unpack_line(line):
line = line.rstrip('\n')
els = line.split(';')


fdata = els[0]
favtor = els[1]
return fdata, favtor



f = open('1.txt', 'r')
lines = f.readlines()
for line in lines:
fdata, favtor = unpack_line(line)
print (lines)
try:
ENcursor.execute("""
SELECT A_sum, a_dev_magn_authcode, a_pay_sts, a_addr_res
FROM BAS.r_payment pay
LEFT JOIN BAS.r_mopmagn magn ON pay.a_payer_cardinfo = magn.a_magn_cardinfo
where substr(A_dt_prc,0,8) = :data
and a_dev_magn_authcode = :avtor
""", data ='fdata%', avtor ='favtor%' )
except cx_Oracle.DatabaseError as info:
print ("SQL Error:", info.__class__)
exit(0)

result = ENcursor.fetchall()
for A_sum, a_dev_magn_authcode, a_pay_sts, a_addr_res in result:
print (A_sum, a_dev_magn_authcode, a_pay_sts, a_addr_res)

файлик с примером данных прикреплен.

Отредактировано Inok (Сен. 17, 2013 21:32:32)

Прикреплённый файлы:
attachment 1.txt (49 байт)

Офлайн

#2 Сен. 17, 2013 20:16:14

Inok
Зарегистрирован: 2013-09-11
Сообщения: 41
Репутация: +  -1  -
Профиль   Отправить e-mail  

Select по данным из файла из Python 3.3 Решено

Решил. быть может кому понадобится.

import cx_Oracle
import string
db = cx_Oracle.connect ('A/11111111@En')
ENcursor = db.cursor()

def unpack_line(line):
line = line.replace(",","")
line = line.replace(" ","")
line = line.strip('\n')
els = line.split(';')

fdata = els[0]
favtor = els[1]
fsum = els[2]
return fdata, favtor, fsum
with open ('file_rez1.txt', 'w', encoding= 'utf-8') as fw:
f = open('1.txt', 'r')
lines = f.readlines()
for line in lines:
fdata, favtor, fsum = unpack_line(line)
#print (lines)
named_params = {'data':fdata, 'avtor':favtor, 'sum':fsum}
print (named_params, file=fw)
try:
ENcursor.execute("""
SELECT A_dt_prc, a_dev_magn_authcode, A_sum, a_pay_sts, a_addr_res
FROM YEN_BAS.r_payment pay
LEFT JOIN YEN_BAS.r_mopmagn magn ON pay.a_payer_cardinfo = magn.a_magn_cardinfo
where pay.A_dt_prc >= concat (:data,'000000')
and pay.A_dt_prc <= concat (:data,'235959')
and a_dev_magn_authcode = :avtor
and a_sum = :sum
""",named_params)
except cx_Oracle.DatabaseError as info:
print ("SQL Error:", info.__class__)
exit(0)

result = ENcursor.fetchall()
for A_dt_prc, a_dev_magn_authcode, A_sum, a_pay_sts, a_addr_res in result:

print (fdata, favtor, fsum, a_addr_res, a_pay_sts, file=fw)

db.close()

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version