rda-python-dbms 2.0.6__py3-none-any.whl → 2.0.8__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -50,7 +50,7 @@ class PgBackup(PgFile):
50
50
  elif option == 'o':
51
51
  self.override = True
52
52
  else:
53
- self.pglog("{}: unknow option".format(arg), self.LGEREX)
53
+ self.pglog("{}: unknown option".format(arg), self.LGEREX)
54
54
  self.cmdlog("pgbackup {}".format(' '.join(argv)))
55
55
 
56
56
  # start actions
@@ -176,7 +176,7 @@ class PgChksum(PgCMD, PgSplit):
176
176
  # get the checksum filelist for wfile
177
177
  def get_checksum_wfilelist(self):
178
178
  self.PVALS['TYPE'] = "Web"
179
- self.PVALS['BUCKET'] = 'rda-data'
179
+ self.PVALS['BUCKET'] = 'gdex-data'
180
180
  flds = "wid, wfile, type, locflag, data_size, checksum, date_modified, time_modified"
181
181
  if self.PGSUM['f']:
182
182
  pgrecs = self.pgmhget('wfile', 'wid, dsid', {'wfile' : self.PGSUM['f']})
@@ -211,11 +211,15 @@ class PgChksum(PgCMD, PgSplit):
211
211
  cnt = len(pgrecs['wid']) if pgrecs else 0
212
212
  wfrecs = {}
213
213
  if cnt > 0:
214
+ tmpcnt = 0
214
215
  for i in range(cnt):
215
216
  dsid = pgrecs['dsid'][i]
216
217
  pgrec = self.pgget_wfile(dsid, flds, 'wid = {}'.format(pgrecs['wid'][i]))
217
- pgrec['dsid'] = dsid
218
- self.addrecord(wfrecs, pgrec, i)
218
+ if pgrec:
219
+ pgrec['dsid'] = dsid
220
+ self.addrecord(wfrecs, pgrec, tmpcnt)
221
+ tmpcnt += 1
222
+ cnt = tmpcnt
219
223
  if cnt > 0:
220
224
  if fcnt == 0 or fcnt > cnt: self.PGSUM['c'] = cnt
221
225
  self.PGSUM['f'] = wfrecs
@@ -226,7 +230,7 @@ class PgChksum(PgCMD, PgSplit):
226
230
  # get the checksum filelist for sfile
227
231
  def get_checksum_sfilelist(self):
228
232
  self.PVALS['TYPE'] = "Saved"
229
- self.PVALS['BUCKET'] = 'rda-decsdata'
233
+ self.PVALS['BUCKET'] = 'gdex-decsdata'
230
234
  flds = "sid, sfile, dsid, type, locflag, data_size, checksum, date_modified, time_modified"
231
235
  hcnd = {}
232
236
  fcnt = self.PGSUM['c']
@@ -331,7 +335,7 @@ class PgChksum(PgCMD, PgSplit):
331
335
  locflag = pgrec['locflag']
332
336
  if locflag == 'O':
333
337
  fname = "{}/{}".format(pgrec['dsid'], pgrec['wfile'])
334
- self.evaluate_object_file(fname, pgrec, 'rda-data', cnts)
338
+ self.evaluate_object_file(fname, pgrec, self.PVALS['BUCKET'], cnts)
335
339
  else:
336
340
  fname = pgrec['wfile']
337
341
  if not re.match(r'^/', fname):
@@ -348,7 +352,7 @@ class PgChksum(PgCMD, PgSplit):
348
352
  locflag = pgrec['locflag']
349
353
  if locflag == 'O':
350
354
  fname = "{}/{}".format(pgrec['dsid'], pgrec['sfile'])
351
- self.evaluate_object_file(fname, pgrec, 'rda-decsdata', cnts)
355
+ self.evaluate_object_file(fname, pgrec, self.PVALS['BUCKET'], cnts)
352
356
  else:
353
357
  fname = pgrec['sfile']
354
358
  if not re.match(r'^/', fname):
@@ -12,7 +12,7 @@ import sys
12
12
  import re
13
13
  import os
14
14
  from os import path as op
15
- from rda_python_common.pg_Util import PgUtil
15
+ from rda_python_common.pg_util import PgUtil
16
16
 
17
17
  class PgDBDump(PgUtil):
18
18
  def __init__(self):
@@ -23,58 +23,80 @@ class PgDBDump(PgUtil):
23
23
  self.SNDACT = self.LOGWRN|self.SNDEML
24
24
  self.pname = self.hname = self.dname = None
25
25
 
26
- # function to read_parameters
27
26
  def read_parameters(self):
28
- # check command line for options
27
+ """
28
+ Parse command-line options and set instance variables.
29
+ Usage: pgdbdump [-b] -d DBNAME -h HostName [-p LocalPath]
30
+ """
29
31
  self.PGLOG['LOGFILE'] = "pgbackup.log" # set log file
30
32
  argv = sys.argv[1:]
31
33
  option = None
32
34
  options = ['b', 'd', 'h', 'p']
33
- for arg in argv:
35
+ i = 0
36
+ while i < len(argv):
37
+ arg = argv[i]
34
38
  ms = re.match(r'^-(\w)$', arg)
35
39
  if ms:
36
40
  option = ms.group(1)
37
- if option not in options: self.pglog("{}: unknow option".format(arg), self.LGEREX)
38
- if option == 'b': self.PGLOG['BCKGRND'] = 1
39
- elif option == 'd':
40
- self.dname = arg
41
- elif option == 'h':
42
- self.hname = arg
43
- elif option == 'p':
44
- self.pname = arg
41
+ if option not in options:
42
+ self.pglog(f"{arg}: unknown option", self.LGEREX)
43
+ if option == 'b':
44
+ self.PGLOG['BCKGRND'] = 1
45
+ option = None
46
+ i += 1
47
+ continue
48
+ # For options that require a value
49
+ if i + 1 >= len(argv):
50
+ self.pglog(f"Option -{option} requires a value", self.LGEREX)
51
+ val = argv[i+1]
52
+ if option == 'd':
53
+ self.dname = val
54
+ elif option == 'h':
55
+ self.hname = val
56
+ elif option == 'p':
57
+ self.pname = val
58
+ i += 2
59
+ option = None
60
+ else:
61
+ i += 1
45
62
  if not (self.dname and self.hname):
46
63
  print("Usage: pgdbdump [-b] -d DBNAME -h HostName [-p LocalPath]")
47
64
  print(" -b - background process and no screen output")
48
65
  print(" -d - PostgreSQL database name to dump at the current directory")
49
66
  print(" -h - Hostname the PostgreSQL server is running on")
50
67
  print(" -p - Local relative path to dump the database, defaults to <DBNAME>_backup_<TODAY>")
51
- sys.exit(0)
68
+ sys.exit(1)
52
69
  self.cmdlog("pgdbdump {}".format(' '.join(argv)))
53
- if not self.pname: self.pname = "{}_backup_{}".format(self.dname, self.curdate())
70
+ if not self.pname:
71
+ short_host = self.hname.split('.')[0] if self.hname else 'host'
72
+ today = self.curdate()
73
+ self.pname = f"{short_host}_{self.dname}_{today}"
54
74
 
55
- # function to start_actions
56
75
  def start_actions(self):
76
+ """Perform the database dump and log actions."""
57
77
  self.pg_database_dbdump()
58
- title = "pgdbdump: {}:{}".format(self.hname, self.dname, self.pname)
59
- tmsg = "{} to {} under {}!".format(title, self.pname, os.getcwd())
78
+ title = f"pgdbdump: {self.hname}:{self.dname}:{self.pname}"
79
+ tmsg = f"{title} to {self.pname} under {os.getcwd()}!"
60
80
  self.set_email(tmsg, self.EMLTOP)
61
81
  self.pglog(title, self.SNDACT)
62
- self.cmdlog()
82
+ self.cmdlog()
63
83
 
64
- # bacup one database
65
84
  def pg_database_dbdump(self):
66
- cmd = "pg_dump {} -h {} -U {} -w -Fd -j 16 -f {}/".format(self.dname, self.hname, self.USNAME, self.pname)
85
+ """Run pg_dump for the specified database and handle errors."""
86
+ cmd = f"pg_dump {self.dname} -h {self.hname} -U {self.USNAME} -w -Fd -j 16 -f {self.pname}/"
67
87
  if op.exists(self.pname):
68
- self.pglog(self.pname + ": Dumping directory exists, remove it", self.ERRACT)
69
- elif not self.pgsystem(cmd, self.LOGACT, 257):
70
- self.pglog("{}: Error dumping database\n{}".format(self.dname, self.PGLOG['SYSERR']), self.ERRACT)
88
+ self.pglog(self.pname + ": Dumping directory exists, aborting to avoid overwrite.", self.ERRACT)
89
+ sys.exit(2)
90
+ if not self.pgsystem(cmd, self.LOGACT, 257):
91
+ self.pglog(f"{self.dname}: Error dumping database\n{self.PGLOG['SYSERR']}", self.ERRACT)
92
+ sys.exit(3)
71
93
 
72
- # main function to excecute this script
94
+ # main function to execute this script
73
95
  def main():
74
- object = PgDBDump()
75
- object.read_parameters()
76
- object.start_actions()
77
- object.pgexit(0)
96
+ pgdb = PgDBDump()
97
+ pgdb.read_parameters()
98
+ pgdb.start_actions()
99
+ pgdb.pgexit(0)
78
100
 
79
101
  # call main() to start program
80
- if __name__ == "__main__": main()
102
+ if __name__ == "__main__": main()
@@ -35,7 +35,7 @@ class PgDBRestore(PgDBI):
35
35
  ms = re.match(r'^-(\w)$', arg)
36
36
  if ms:
37
37
  option = ms.group(1)
38
- if option not in options: self.pglog("{}: unknow option".format(arg), self.LGEREX)
38
+ if option not in options: self.pglog("{}: unknown option".format(arg), self.LGEREX)
39
39
  if option == 'b': self.PGLOG['BCKGRND'] = 1
40
40
  elif option == 'd':
41
41
  self.dname = arg
@@ -61,7 +61,7 @@ class PgDBRestore(PgDBI):
61
61
  self.pglog(title, self.SNDACT)
62
62
  self.cmdlog()
63
63
 
64
- # bacup one database
64
+ # restore one database
65
65
  def pg_database_dbrestore(self):
66
66
  cmd = "pg_restore -d {} -h {} -U {} -w -j 16 -Fd {}".format(self.dname, self.hname, self.USNAME, self.pname)
67
67
  if not op.exists(self.pname):
@@ -69,7 +69,7 @@ class PgDBRestore(PgDBI):
69
69
  elif not self.pgsystem(cmd, self.LOGACT, 257):
70
70
  self.pglog("{}: Error restoring database\n{}".format(self.dname, self.PGLOG['SYSERR']), self.ERRACT)
71
71
 
72
- # main function to excecute this script
72
+ # main function to execute this script
73
73
  def main():
74
74
  object = PgDBRestore()
75
75
  object.read_parameters()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rda_python_dbms
3
- Version: 2.0.6
3
+ Version: 2.0.8
4
4
  Summary: RDA Python Package to manage PostreSQL databases
5
5
  Author-email: Zaihua Ji <zji@ucar.edu>
6
6
  Project-URL: Homepage, https://github.com/NCAR/rda-python-dbms
@@ -9,11 +9,11 @@ rda_python_dbms/pg_ddl.py,sha256=77Cil6eBKf5S5g7yWcN9m5dLZlpY3_USFQBKcaP4fiU,544
9
9
  rda_python_dbms/pg_ddllib.py,sha256=-zawllfUCe7QZNvza-u5TAYKP4yilC9K6TetHhoGenU,44265
10
10
  rda_python_dbms/pg_schema.py,sha256=Vsf5fKENYIOgMKE3yS0TkXhg-aeHZ2nYzpvltFAcdFY,5520
11
11
  rda_python_dbms/pg_seq.py,sha256=wNxqsyIjcTplJErPirZ-VkZ8HS4mgQUwPz8Xwd12kYA,4914
12
- rda_python_dbms/pgbackup.py,sha256=8LaRE7SeRT1hq0_oUby9lcjHSjKZI0YC_jXqtT5LNRo,4248
13
- rda_python_dbms/pgchksum.py,sha256=6B_FpHpY9iChIONsbwaZO_Uzk-1ala134-8QCg3hFek,21670
12
+ rda_python_dbms/pgbackup.py,sha256=IuP3nQEEVR86YlSZuGyqsdz1-O9rgET76FnWB7iL3xk,4249
13
+ rda_python_dbms/pgchksum.py,sha256=8jfBncptxp57Gr2t66Kk9MFt5Z_aXfozOGZPaohKGwM,21802
14
14
  rda_python_dbms/pgcmptables.py,sha256=LQ4KK4JuQs2z3nBdINWYgyiGu2MF9RZjS5_cAktbs6k,47123
15
- rda_python_dbms/pgdbdump.py,sha256=vM-J3VfEDTXD97OV0Ke3BJzNiXxuMQS0Ut1SxkqujkU,3170
16
- rda_python_dbms/pgdbrestore.py,sha256=aL1cfUQcNFlLCHBCGP3FPRc8biJfTxftq9lm_Ou8KHA,3108
15
+ rda_python_dbms/pgdbdump.py,sha256=8d-1z16Y2DyJnQqex2wFu5svChKgncPnzdQ-iUftHg8,3831
16
+ rda_python_dbms/pgdbrestore.py,sha256=d12hl1r6usK1oGIFAPVWUB_KkIH04PPlugxVSnLOX1g,3110
17
17
  rda_python_dbms/pgddl.py,sha256=kHTtWzetAwaS8GEG9x8KBLwW-RqMJ-2cbGDlYtJOSH8,6198
18
18
  rda_python_dbms/pgddl.usg,sha256=7ly6YbusvyIy9yQn9reGIUtZQ5Wiehp9-DKDgfjqSBE,2267
19
19
  rda_python_dbms/pgschema.py,sha256=ZLkRy2vgfkRYWQ95bGXkz13n5LR5wrdki6WV5ZA8eL0,6293
@@ -954,9 +954,9 @@ rda_python_dbms/tables/obsua/wind_5v2_0.json,sha256=NehMFE-GMNlD5Bh_fiacfSOmZWkr
954
954
  rda_python_dbms/tables/obsua/wind_60v2_0.json,sha256=jOyQgD5ph7YBMuQfvYz1Ln6X_-_Vdhl36HBexOHZ1dA,1067
955
955
  rda_python_dbms/tables/obsua/wind_8v2_0.json,sha256=5wtCThmFeOyiAGH_Qv3_jrXjhjo9b87ehlpI9QQY2SM,1064
956
956
  rda_python_dbms/tables/obsua/wind_9v2_0.json,sha256=7OKFUicOn15LL_WuF1VE_L8DjxsHmRP4uBnopuMIeTg,1064
957
- rda_python_dbms-2.0.6.dist-info/licenses/LICENSE,sha256=Uky6fiiVw7cakFVRtVpzg-mvqOQ-WcA_H8lHqhPRg58,1101
958
- rda_python_dbms-2.0.6.dist-info/METADATA,sha256=YCh1izP8qpeuqP_Yzss3wMjPMDl-xff7ketsaYxoqLM,617
959
- rda_python_dbms-2.0.6.dist-info/WHEEL,sha256=YCfwYGOYMi5Jhw2fU4yNgwErybb2IX5PEwBKV4ZbdBo,91
960
- rda_python_dbms-2.0.6.dist-info/entry_points.txt,sha256=iti6iZS2OEeBqO5aHlWeMFcbuwN_2assidP0qeSkQ6E,346
961
- rda_python_dbms-2.0.6.dist-info/top_level.txt,sha256=4T1ShNUMyiqmwDIuDL7pDOm_S-6zWWW3Vy6OdAzYA4c,16
962
- rda_python_dbms-2.0.6.dist-info/RECORD,,
957
+ rda_python_dbms-2.0.8.dist-info/licenses/LICENSE,sha256=Uky6fiiVw7cakFVRtVpzg-mvqOQ-WcA_H8lHqhPRg58,1101
958
+ rda_python_dbms-2.0.8.dist-info/METADATA,sha256=yGW3Ewn-Bd1Nu5TcvSLrB9vj5-aUQ6Hm55XeL2eibAg,617
959
+ rda_python_dbms-2.0.8.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
960
+ rda_python_dbms-2.0.8.dist-info/entry_points.txt,sha256=iti6iZS2OEeBqO5aHlWeMFcbuwN_2assidP0qeSkQ6E,346
961
+ rda_python_dbms-2.0.8.dist-info/top_level.txt,sha256=4T1ShNUMyiqmwDIuDL7pDOm_S-6zWWW3Vy6OdAzYA4c,16
962
+ rda_python_dbms-2.0.8.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (82.0.0)
2
+ Generator: setuptools (82.0.1)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5