运维联盟俱乐部

 找回密码
 立即注册
查看: 170|回复: 1

python a-b

[复制链接]
  • TA的每日心情
    开心
    2023-8-9 11:05
  • 发表于 2024-1-8 11:04:08 | 显示全部楼层 |阅读模式
    如果你不想使用数据库链接、存储过程,并且希望使用 Python 来将 Oracle 数据库中的查询结果存储到另一个数据库,可以使用以下步骤:

    在 Python 中连接到 A 库和 B 库,并执行查询操作。
    1. import cx_Oracle

    2. # 连接到 A 库
    3. a_conn = cx_Oracle.connect("a_username/a_password@a_db_host:a_db_port/a_db_sid")
    4. a_cursor = a_conn.cursor()

    5. # 执行查询操作
    6. a_cursor.execute("SELECT column1, column2, column3 FROM a_table")

    7. # 获取查询结果
    8. query_result = a_cursor.fetchall()

    9. # 关闭游标和连接
    10. a_cursor.close()
    11. a_conn.close()
    复制代码
    在这个示例中,我们使用 cx_Oracle 库连接到 A 库,并执行了查询操作。你需要替换 a_username、a_password、a_db_host、a_db_port、a_db_sid、a_table 和列名为你自己的实际值。

    将查询结果存储到 B 库。
    1. # 连接到 B 库
    2. b_conn = cx_Oracle.connect("b_username/b_password@b_db_host:b_db_port/b_db_sid")
    3. b_cursor = b_conn.cursor()

    4. # 插入查询结果到 B 库的表
    5. for row in query_result:
    6.     b_cursor.execute("INSERT INTO b_table (column1, column2, column3) VALUES (:1, :2, :3)", row)

    7. # 提交事务和关闭游标、连接
    8. b_conn.commit()
    9. b_cursor.close()
    10. b_conn.close()
    复制代码
    在这个示例中,我们使用 cx_Oracle 库连接到 B 库,并将查询结果逐行插入到 B 库的表中。你需要替换 b_username、b_password、b_db_host、b_db_port、b_db_sid、b_table 和列名为你自己的实际值。

    这是一种使用 Python 来将 Oracle 数据库中的查询结果存储到另一个数据库的方法。你可以根据实际情况进行适当的修改和调整,例如添加错误处理、参数化查询等。确保在使用之前安装了 cx_Oracle 库,并且配置了正确的连接参数。
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2023-8-9 11:05
  •  楼主| 发表于 2024-1-12 02:43:09 | 显示全部楼层
    1. import cx_Oracle

    2. target_conn = cx_Oracle.connect("zhyu/zhyu@192.168.56.101:1521/ora19")
    3. target_cursor = target_conn.cursor()
    4. dbl_query = "select IP_ADDRESS, LISTENER_PORT, SERVICE_NAME, USERNAME, PASSWORD, DB_UUID from godba_add_db"

    5. target_cursor.execute(dbl_query)
    6. for IP_ADDRESS, LISTENER_PORT, SERVICE_NAME, USERNAME, PASSWORD, DB_UUID in target_cursor.fetchall():
    7.     source_conn = cx_Oracle.connect(f"{USERNAME}/{PASSWORD}@{IP_ADDRESS}:{LISTENER_PORT}/{SERVICE_NAME}")
    8.     source_cursor = source_conn.cursor()
    9.     source_cursor.execute("select username, account_status, :db_uuid, sysdate from dba_users", db_uuid=DB_UUID)
    10.     for result in source_cursor.fetchall():
    11.         print(result)
    12.     source_cursor.close()
    13.     source_conn.close()

    14. target_cursor.close()
    15. target_conn.close()
    复制代码
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    运维联盟俱乐部 ( 冀ICP备19036648号 )

    GMT+8, 2024-5-2 21:46 , Processed in 0.050575 second(s), 21 queries , Gzip On.

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

    快速回复 返回顶部 返回列表