Advertisement
Guest User

Класс для упрощения работы с ФБ

a guest
Apr 19th, 2011
775
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.58 KB | None | 0 0
  1.  
  2. class fb:
  3.     "Для упрощения работы с FB"
  4.     def __init__(self, dbhost, dbfile, dbuser, dbpass):
  5.         self.con = kinterbasdb.connect(
  6.             host = dbhost, database = dbfile,
  7.             user = dbuser, password = dbpass, charset = 'WIN1251'
  8.         )
  9.  
  10.     def selectSQL(self, query, params=([])):
  11.         "Select data from db"
  12.         customTPB = (kinterbasdb.isc_tpb_read_committed + kinterbasdb.isc_tpb_rec_version)
  13.         self.con.begin(tpb = customTPB)
  14.         cur = self.con.cursor()
  15.         cur.execute(query, params)
  16.         result = cur.fetchall()
  17.         cur.close()
  18.         self.con.commit()
  19.         return result
  20.  
  21.     def selectBlobToFile(self, filename, query, params=([])):
  22.         customTPB = (kinterbasdb.isc_tpb_write + kinterbasdb.isc_tpb_read_committed + kinterbasdb.isc_tpb_rec_version)
  23.         self.con.begin(tpb = customTPB)
  24.         cur = self.con.cursor()
  25.         cur.set_type_trans_in ({'BLOB': {'mode': 'stream'}})
  26.         cur.set_type_trans_out({'BLOB': {'mode': 'stream'}})
  27.         try:
  28.             blobfile = open(filename, 'w')
  29.             cur.execute(query, params)
  30.             blobreader = cur.fetchone()[0]
  31.             for chunkNo, chunk in enumerate(blobreader.chunks(50)):
  32.                 blobfile.write(chunk)
  33.         except kinterbasdb.ProgrammingError, (errNumb, errText):
  34.             cur.close()
  35.             self.con.rollback()
  36.             result = (errNumb, errText, query)
  37.         except:
  38.             cur.close()
  39.             self.con.rollback()
  40.             result = (-1, 'Unknown error', query)
  41.         else:
  42.             cur.close()
  43.             self.con.commit()
  44.             result = (0, 'Success', query)
  45.         finally:
  46.             return result
  47.  
  48.     def execSQL(self, query, params=([])):
  49.         customTPB = (kinterbasdb.isc_tpb_write + kinterbasdb.isc_tpb_read_committed + kinterbasdb.isc_tpb_rec_version)
  50.         self.con.begin(tpb = customTPB)
  51.         cur = self.con.cursor()
  52.         cur.set_type_trans_in ({'BLOB': {'mode': 'stream'}})
  53.         cur.set_type_trans_out({'BLOB': {'mode': 'stream'}})
  54.         try:
  55.             cur.execute(query, params)
  56.         except kinterbasdb.ProgrammingError, (errNumb, errText):
  57.             cur.close()
  58.             self.con.rollback()
  59.             result = (errNumb, errText, query)
  60.         except:
  61.             cur.close()
  62.             self.con.rollback()
  63.             result = (-1, 'Unknown error', query)
  64.         else:
  65.             cur.close()
  66.             self.con.commit()
  67.             result = (0, 'Success', query)
  68.         finally:
  69.             return result
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement