Я хочу создать меньший дБ, начиная с большего, который мне дали, и я хотел бы сделать все это в python с sqlalchemy.
Вот что у меня так далеко: I Я запрашиваю исходную базу данных и выполняю объединение двух таблиц (книги и анатит), чтобы отфильтровать данные (в исходной базе данных есть еще много таблиц, которые мне не нужны). Я также хочу, чтобы таблица market_trades была включена в меньшую базу данных.
engine = create_engine('sqlite:///D:/backtest_dbs/20191016_MIT.db')
conn=engine.connect()
metadata= MetaData()
books=Table('books',metadata, autoload=True, autoload_with=engine)
anatit=Table('anatit',metadata, autoload=True, autoload_with=engine)
market_trades=Table('market_trades',metadata, autoload=True, autoload_with=engine)
stmt=select([books,anatit.columns.CS,anatit.columns.isin,anatit.columns.desc])
stmt=stmt.select_from(anatit.join(books,anatit.columns.CS==books.columns.CS)).where(anatit.columns.desc.like('%BTP%'))
result_proxy=conn.execute(stmt)
Однако после выполнения инструкции я не уверен, что делать с ResultProxy. Размер составляет около 2,5 миллионов строк, поэтому я не уверен насчет for
l oop с .insert()
. Сначала я создаю другой движок, который создает меньшую базу данных в другой папке. Каков наилучший (в данном случае «лучший» означает питонический / эффективный) способ создания таблиц, и можем ли мы сделать это, начиная с ResultProxy, не заполняя их после? А как насчет таблицы market_trades, могу ли я использовать autoload_with=engine
, чтобы добавить ее к enigne_small
?
engine_small = create_engine('sqlite:///D:/backtest_dbs/small/20191016_MIT_small.db')
conn=engine_small.connect()
books=Table('books',metadata,...) # What goes in here?
anatit=Table('anatit',metadata,... )
market_trades=Table('market_trades',...) # Can I use autoload_with=engine, the larger db?
metadata.create_all(engine_small)
Я знаю, что есть и другие способы, которые не используют SQLAlchemy, но я подумал, что это будет хорошее упражнение и пример, и, кроме того, я делаю все в python в этом конкретном проекте, и я бы хотел, чтобы так и оставалось. Однако, если кто-то думает, что есть какие-то лучшие решения, которые вообще не используют SQLAlchemy, я с удовольствием выслушаю.