author | Radek Brich <radek.brich@devl.cz> |
Thu, 31 Jan 2013 11:02:04 +0100 | |
changeset 62 | af637235ca81 |
parent 61 | 703bba757605 |
child 63 | 8c7f0a51ba50 |
permissions | -rwxr-xr-x |
2 | 1 |
#!/usr/bin/env python3.2 |
44
4fe39c59c515
Update longqueries tool: add client IP, waiting attributes.
Radek Brich <radek.brich@devl.cz>
parents:
16
diff
changeset
|
2 |
# |
4fe39c59c515
Update longqueries tool: add client IP, waiting attributes.
Radek Brich <radek.brich@devl.cz>
parents:
16
diff
changeset
|
3 |
# Print differences in database schema. |
4fe39c59c515
Update longqueries tool: add client IP, waiting attributes.
Radek Brich <radek.brich@devl.cz>
parents:
16
diff
changeset
|
4 |
# |
4fe39c59c515
Update longqueries tool: add client IP, waiting attributes.
Radek Brich <radek.brich@devl.cz>
parents:
16
diff
changeset
|
5 |
# Prints changes from source to destination. |
4fe39c59c515
Update longqueries tool: add client IP, waiting attributes.
Radek Brich <radek.brich@devl.cz>
parents:
16
diff
changeset
|
6 |
# SQL patch updates source database schema to destination schema. |
4fe39c59c515
Update longqueries tool: add client IP, waiting attributes.
Radek Brich <radek.brich@devl.cz>
parents:
16
diff
changeset
|
7 |
# |
2 | 8 |
|
9
2fcc8ef0b97d
Reorganize again :-) Add setup.py.
Radek Brich <radek.brich@devl.cz>
parents:
7
diff
changeset
|
9 |
from pgtoolkit import pgmanager, pgbrowser, pgdiff, toolbase |
2 | 10 |
|
11 |
||
7
685b20d2d3ab
Reorganize directories. PgDataDiff - reworked. PgManager - add fetchone_adapted, fetchall_adapted to cursor.
Radek Brich <radek.brich@devl.cz>
parents:
5
diff
changeset
|
12 |
class SchemaDiffTool(toolbase.SrcDstTool): |
5 | 13 |
def __init__(self): |
56
94e091c23ebb
Add reverse parameter for diff tools.
Radek Brich <radek.brich@devl.cz>
parents:
44
diff
changeset
|
14 |
toolbase.SrcDstTool.__init__(self, name='schemadiff', desc='Database schema diff.', allow_reverse = True) |
94e091c23ebb
Add reverse parameter for diff tools.
Radek Brich <radek.brich@devl.cz>
parents:
44
diff
changeset
|
15 |
|
5 | 16 |
self.parser.add_argument('-s', dest='schema', nargs='*', help='Schema filter') |
17 |
self.parser.add_argument('-t', dest='table', nargs='*', help='Table filter') |
|
16
cb7e13711a99
MyManager - create_conn() - allow same parameters as for PgManager.
Radek Brich <brich.radek@ifortuna.cz>
parents:
9
diff
changeset
|
18 |
self.parser.add_argument('--sql', action='store_true', help='Output is SQL script.') |
56
94e091c23ebb
Add reverse parameter for diff tools.
Radek Brich <radek.brich@devl.cz>
parents:
44
diff
changeset
|
19 |
|
5 | 20 |
self.init() |
2 | 21 |
|
5 | 22 |
def main(self): |
23 |
srcbrowser = pgbrowser.PgBrowser(self.pgm.get_conn('src')) |
|
24 |
dstbrowser = pgbrowser.PgBrowser(self.pgm.get_conn('dst')) |
|
56
94e091c23ebb
Add reverse parameter for diff tools.
Radek Brich <radek.brich@devl.cz>
parents:
44
diff
changeset
|
25 |
|
5 | 26 |
pgd = pgdiff.PgDiff(srcbrowser, dstbrowser) |
2 | 27 |
|
61
703bba757605
PgDiff: check schema existance.
Radek Brich <radek.brich@devl.cz>
parents:
56
diff
changeset
|
28 |
try: |
703bba757605
PgDiff: check schema existance.
Radek Brich <radek.brich@devl.cz>
parents:
56
diff
changeset
|
29 |
if self.args.schema: |
703bba757605
PgDiff: check schema existance.
Radek Brich <radek.brich@devl.cz>
parents:
56
diff
changeset
|
30 |
pgd.filter_schemas(include=self.args.schema) |
703bba757605
PgDiff: check schema existance.
Radek Brich <radek.brich@devl.cz>
parents:
56
diff
changeset
|
31 |
|
703bba757605
PgDiff: check schema existance.
Radek Brich <radek.brich@devl.cz>
parents:
56
diff
changeset
|
32 |
if self.args.table: |
703bba757605
PgDiff: check schema existance.
Radek Brich <radek.brich@devl.cz>
parents:
56
diff
changeset
|
33 |
pgd.filter_tables(include=self.args.table) |
56
94e091c23ebb
Add reverse parameter for diff tools.
Radek Brich <radek.brich@devl.cz>
parents:
44
diff
changeset
|
34 |
|
61
703bba757605
PgDiff: check schema existance.
Radek Brich <radek.brich@devl.cz>
parents:
56
diff
changeset
|
35 |
if self.args.sql: |
703bba757605
PgDiff: check schema existance.
Radek Brich <radek.brich@devl.cz>
parents:
56
diff
changeset
|
36 |
pgd.print_patch() |
703bba757605
PgDiff: check schema existance.
Radek Brich <radek.brich@devl.cz>
parents:
56
diff
changeset
|
37 |
else: |
703bba757605
PgDiff: check schema existance.
Radek Brich <radek.brich@devl.cz>
parents:
56
diff
changeset
|
38 |
pgd.print_diff() |
703bba757605
PgDiff: check schema existance.
Radek Brich <radek.brich@devl.cz>
parents:
56
diff
changeset
|
39 |
except pgdiff.PgDiffError as e: |
703bba757605
PgDiff: check schema existance.
Radek Brich <radek.brich@devl.cz>
parents:
56
diff
changeset
|
40 |
print('PgDiff error:', str(e)) |
5 | 41 |
|
2 | 42 |
|
5 | 43 |
tool = SchemaDiffTool() |
44 |
tool.main() |