def __init__(self): # инициализирует переменные и запускает функции на выполнение global den global cur global conn global session global Session global engine global dbPath global emp global metadata global k global data0
self.create_emp=self.create_emp() self.print_emp=self.print_emp() self.create_table_emp_for_alchemy=self.create_table_emp_for_alchemy() self.print_table_emp_alchemy=self.print_table_emp_alchemy()
По поводу “оптимизации”
Ну вот смотрите у вас в нескольких местах используется конструкци
=sqlite3.connect('datafile2.db'), почему бы вам не вынести ‘datafile2.db’ в отдельную переменну в начале скрипта , типа:
DB_PATH = ‘datafile2.db’
а потом внутри:
=sqlite3.connect('DB_PATH')
это существенно улучшит как читаемость скрипта, так и дальнейшую работу с ним, потому что если, например, вам нужно будет поменять datafile2.db на datafile3.db вы это сделаете только в одном месте, вместо того чтобы искать и менять по всему скрипту. таже фигня с ‘example.db’, может еще с какими значениями, это так первое что на глаза попалось.
Вот у вас есть повторяющиеся два раза куски кода типа:
engine = create_engine('sqlite:///%s' % dbPath) metadata = MetaData(engine) emp = Table('emp', metadata, Column('id', Integer, primary_key=True), Column('name', String), Column('salary', Integer), Column('dept', Integer),) Session = sessionmaker(bind=engine) session = Session() metadata.create_all(engine)
Вот у вас повсторяюстья много раз подряд простыня cur.execute('''blah blah blah'''), возможно стит все ‘'’blah blah blah''' вынести в отдельный список или многострочный литерал, и потом в цикле для каждой строки делать cur.execute(line) ну и тд…