diff --git a/freqtrade/commands/db_commands.py b/freqtrade/commands/db_commands.py index c57afa1e4..31e7cb8f2 100644 --- a/freqtrade/commands/db_commands.py +++ b/freqtrade/commands/db_commands.py @@ -1,9 +1,40 @@ +import logging from typing import Any, Dict from freqtrade.configuration.config_setup import setup_utils_configuration from freqtrade.enums.runmode import RunMode +logger = logging.getLogger(__name__) + + def start_db_convert(args: Dict[str, Any]) -> None: + from sqlalchemy.orm import make_transient + + from freqtrade.persistence import Trade, init_db + from freqtrade.persistence.pairlock import PairLock + config = setup_utils_configuration(args, RunMode.UTIL_NO_EXCHANGE) - pass + + init_db(config['db_url'], False) + session_target = Trade._session + init_db(config['db_url_from'], False) + + # print(f"{id(sessionA)=}, {id(sessionB)=}") + trade_count = 0 + pairlock_count = 0 + for trade in Trade.get_trades(): + trade_count += 1 + make_transient(trade) + for o in trade.orders: + make_transient(o) + + session_target.add(trade) + session_target.commit() + + for pairlock in PairLock.query: + pairlock_count += 1 + make_transient(pairlock) + session_target.add(pairlock) + session_target.commit() + logger.info(f"Migrated {trade_count} Trades, and {pairlock_count} Pairlocks.") diff --git a/freqtrade/configuration/configuration.py b/freqtrade/configuration/configuration.py index 80df6fb3f..0346b4205 100644 --- a/freqtrade/configuration/configuration.py +++ b/freqtrade/configuration/configuration.py @@ -147,6 +147,10 @@ class Configuration: config.update({'db_url': self.args['db_url']}) logger.info('Parameter --db-url detected ...') + self._args_to_config(config, argname='db_url_from', + logstring='Parameter --db-url-from detected ...') + + if config.get('force_entry_enable', False): logger.warning('`force_entry_enable` RPC message enabled.')