java操作pg库的工具类

地址 https://blog.youkuaiyun.com/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()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值