• 金仓数据库KingbaseES客户端编程开发框架-SQLAlchemy(4. 程序示例)


    4. 程序示例

    4.1. 连接数据库

    from sqlalchemy import create_engine
    
    database = "TEST"
    user = "SYSTEM"
    password = "123456"
    host = "127.0.0.1"
    port = "54321"
    
    conn_str = 'kingbase+ksycopg2://{}:{}@{}:{}/{}'.format(user, password, host, port, database)
    engine = create_engine(conn_str)
    
    conn = engine.connect()
    res = conn.execute("select version()")
    rows = res.fetchall()
    print("database version:", rows)
    

    4.2. ORM基本操作

    import sqlalchemy
    from sqlalchemy.ext.declarative import declarative_base
    from sqlalchemy import Column, Integer, String
    from sqlalchemy.orm import sessionmaker
    
    from sqlalchemy import create_engine
    
    database = "TEST"
    user = "SYSTEM"
    password = "123456"
    host = "127.0.0.1"
    port = "54321"
    
    
    def getengine():
        conn_str = 'kingbase+ksycopg2://{}:{}@{}:{}/{}'.format(user, password, host, port, database)
        engine = create_engine(conn_str)
        return engine
    
    
    class test_sqlalchemy(declarative_base()):
        __tablename__ = 'test_sqlalchemy'
        num = Column(Integer, primary_key=True)
        val = Column(String)
    
        def __repr__(self):
            return "(Column: num={}, val={})".format(self.num, self.val)
    
    
    if __name__ == "__main__":
        engine = getengine()
        classa1 = declarative_base()
        classa1.metadata.create_all(engine)
        session = sessionmaker(bind=engine)()
    
        # insert
        data0 = test_sqlalchemy(num='1', val='ABCDEF123')
        data1 = test_sqlalchemy(num='100', val='ORM方式插入数据')
        data2 = test_sqlalchemy(num='110', val='中文测试数据')
    
        session.add(data0)
        session.add(data1)
        session.add(data2)
    
        # update
        session.query(test_sqlalchemy).filter(test_sqlalchemy.num == 1).update(
            {"val": test_sqlalchemy.val + "(append data)"},
            synchronize_session=False
        )
        session.commit()
    
        # select
        results = session.query(test_sqlalchemy).all()
        print(results)
    
        session.close()
  • 相关阅读:
    基于时间序列模型的非平衡数据的过采样算法
    EasyRAFT
    软件测试基本概念
    基于python的汽车数据可视化、推荐及预测系统
    Spring Boot 如何快速过滤出一次请求的所有日志?
    TCP协议之《数据与控制流程交叉时的延迟处理》
    M编程备忘录之C++——多态
    一文图解爬虫_姊妹篇(spider)
    2022鹏城杯web
    Auto.js java布局 转 UI 布局,自己定义uii.layout()
  • 原文地址:https://blog.csdn.net/arthemis_14/article/details/127441265