java操作pg库的工具类

地址 https://blog.csdn.net/u014131617/article/details/85336084
class ConnectDBBySqlAlchemy:
def init(self, db_name, conf=None, config_key=“archimedes_db”, reflect_all=False , database=“mysql”, **kwargs):
databases = {“mysql”:“mysql+mysqlconnector”,“postgresql”:“postgresql”}
#通过传入库,得到链接库的命令
self.use_database = databases.get(database)
# 初始化
self.config_key = config_key
self.conf = conf
self.username = kwargs.get(“username”) if kwargs.get(“username”) else conf.get(config_key, “user_name”)
self.password = kwargs.get(“password”) if kwargs.get(“password”) else conf.get(config_key, “password”)
self.host = kwargs.get(“host”) if kwargs.get(“host”) else conf.get(config_key, “host”)
self.port = kwargs.get(“port”) if kwargs.get(“port”) else conf.get(config_key, “port”)
self.db_name = db_name
self.db_session = self.connet_db()
if reflect_all is True:
self.tables = self.tables_mode()
else:
self.Base = self.single_table_mode()

def connet_db(self):
    engine_str = "{0}://{1}:{2}@{3}:{4}/{5}".format(self.use_database,self.username, self.password, self.host,
        self.port, self.db_name)
    self.engine = create_engine(engine_str, max_overflow=-1, convert_unicode=True)
    self.metadata = MetaData(bind=self.engine)
    Session = sessionmaker(bind=self.engine)
    # return Session(), Base.classes
    return Session()

def single_table_mode(self):
    return declarative_base()

def select_table(self, table_name, schema=None):
    return Table(table_name, self.metadata, autoload=True, schema=schema)

def tables_mode(self):
    self.Base = automap_base()
    self.Base.prepare(self.engine, reflect=True)
    return self.Base.classes

def __del__(self):
    self.db_session.close()

4 sqlalchemy的使用(单独映射)

db = ConnectDBBySqlAlchemy(DB, conf ,config_key=“archimedes_db_pg”,database=‘postgresql’)
db_session = db.db_session

class TblManagermentRegisterInfo(db.Base):
table = db.select_table(“tbl_management_register_info”,schema=“config”)

results = db_session.query(TblManagermentRegisterInfo).filter(TblManagermentRegisterInfo.is_online == ‘1’ and TblManagermentRegisterInfo.table_alise == viewname).all()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用JavaPG进行增量备份,你需要使用Java的JDBC API连接到PG数据并执行备份操作。以下是一个基本的备份过程: 1. 使用JDBC连接到PG数据:可以使用JDBC连接字符串来创建连接,例如: ``` String url = "jdbc:postgresql://localhost:5432/mydb"; Connection conn = DriverManager.getConnection(url, "myuser", "mypassword"); ``` 2. 执行备份命令:使用PGpg_dump命令来备份数据。以下是一个备份命令的示例: ``` pg_dump -U myuser -h localhost -p 5432 -F c -b -v -f backup_file.dump mydb ``` 在Java中,可以使用ProcessBuilder类来运行备份命令,例如: ``` ProcessBuilder pb = new ProcessBuilder("pg_dump", "-U", "myuser", "-h", "localhost", "-p", "5432", "-F", "c", "-b", "-v", "-f", "backup_file.dump", "mydb"); Process p = pb.start(); p.waitFor(); ``` 3. 执行增量备份:使用PGpg_dump命令的--incremental选项来执行增量备份。以下是一个增量备份命令的示例: ``` pg_dump -U myuser -h localhost -p 5432 -F c -b -v -f backup_file.dump mydb --incremental ``` 要执行增量备份,你需要在备份文件名中指定一个唯一的标识符,例如时间戳。在Java中,你可以使用SimpleDateFormat类来创建时间戳,然后将其插入备份文件名中,例如: ``` SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); String timestamp = sdf.format(new Date()); String backupFileName = "backup_file_" + timestamp + ".dump"; ``` 然后,你可以使用ProcessBuilder类来运行增量备份命令,例如: ``` ProcessBuilder pb = new ProcessBuilder("pg_dump", "-U", "myuser", "-h", "localhost", "-p", "5432", "-F", "c", "-b", "-v", "-f", backupFileName, "mydb", "--incremental"); Process p = pb.start(); p.waitFor(); ``` 注意:增量备份只适用于PG 10及以上版本。在PG 9.5及以下版本中,你需要使用pg_receivexlog和pg_basebackup命令来执行增量备份。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值