db_update.py 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. from sqlalchemy import create_engine, Column, Integer
  2. from sqlalchemy.orm import sessionmaker
  3. from baangt.base.DataBaseORM import DATABASE_URL, TestrunLog, TestCaseLog, TestCaseSequenceLog
  4. def add_column(engine, table_name, column):
  5. column_name = column.compile(dialect=engine.dialect)
  6. column_type = column.type.compile(engine.dialect)
  7. #column_nullable = column.nullable.compile(engine.dialect)
  8. #column_default = column.default.compile(engine.dialect)
  9. sql = f'''
  10. ALTER TABLE {table_name}
  11. ADD COLUMN {column_name} {column_type} {"NULL" if column.nullable else "NOT NULL"}
  12. {"DEFAULT " if column.default else ""}{column.default.arg if column.default else ""}
  13. '''
  14. print(f'*** CREATING new column in table {table_name}:\n{sql}')
  15. engine.execute(sql)
  16. if __name__ == '__main__':
  17. engine = create_engine(DATABASE_URL)
  18. # add new columns
  19. number_column = Column('number', Integer, nullable=False, default=0)
  20. add_column(engine, TestCaseSequenceLog.__table__, number_column)
  21. add_column(engine, TestCaseLog.__table__, number_column)
  22. # populate with numbers
  23. print('\n*** POPULATING new columns')
  24. session = sessionmaker(bind=engine)()
  25. # fetch testruns
  26. print('\nSetting numbers of TestCaseSequeces')
  27. testruns = session.query(TestrunLog)
  28. for tr_index, tr in enumerate(testruns):
  29. for tcs_index, tcs in enumerate(tr.testcase_sequences, 1):
  30. tcs.number = tcs_index
  31. if tr_index and not tr_index%50:
  32. print(f'{tr_index} TestrunLogs processed')
  33. session.commit()
  34. # fetch testcase sequences
  35. print('\nSetting numbers of TestCases')
  36. testcase_sequences = session.query(TestCaseSequenceLog)
  37. for tcs_index, tcs in enumerate(testcase_sequences):
  38. for tc_index, tc in enumerate(tcs.testcases, 1):
  39. tc.number = tc_index
  40. if tcs_index and not tcs_index%50:
  41. print(f'{tcs_index} TestCaseSequenceLogs processed')
  42. session.commit()