Форум сайта python.su
дЕнь добрый.
такая ситуация по раздельному распарсивание файла и селект по базе работают. когда же пытаюсь обьединить, нет.
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)
Прикреплённый файлы:
1.txt (49 байт)
Офлайн
Решил. быть может кому понадобится.
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()
Офлайн