运维联盟俱乐部

 找回密码
 立即注册
查看: 224|回复: 0

python获取数据库连接串并进行查询

[复制链接]
  • TA的每日心情
    开心
    2023-8-9 11:05
  • 发表于 2023-12-29 05:46:09 | 显示全部楼层 |阅读模式
    要从表中获取Oracle数据库的IP、端口和服务名称,并连接到该数据库,你可以使用Python中的Oracle数据库连接库cx_Oracle。

    请确保已安装cx_Oracle库,可以使用pip命令进行安装:pip install cx_Oracle

    下面是一个示例代码,演示了如何从表中获取连接信息并连接到Oracle数据库:
    1. import cx_Oracle

    2. # 数据库连接信息
    3. db_username = 'your_username'
    4. db_password = 'your_password'
    5. db_host = 'your_host'
    6. db_port = 'your_port'
    7. db_service_name = 'your_service_name'

    8. # 表名和字段名
    9. table_name = 'your_table'
    10. ip_column = 'ip_column'
    11. port_column = 'port_column'
    12. service_name_column = 'service_name_column'

    13. try:
    14.     # 建立与Oracle数据库的连接
    15.     dsn = cx_Oracle.makedsn(db_host, db_port, service_name=db_service_name)
    16.     connection = cx_Oracle.connect(db_username, db_password, dsn=dsn)

    17.     # 创建游标对象
    18.     cursor = connection.cursor()

    19.     # 查询表中的连接信息
    20.     query = f"SELECT {ip_column}, {port_column}, {service_name_column} FROM {table_name}"
    21.     cursor.execute(query)

    22.     # 获取查询结果
    23.     result = cursor.fetchone()

    24.     if result:
    25.         ip = result[0]
    26.         port = result[1]
    27.         service_name = result[2]

    28.         # 使用获取到的连接信息重新建立连接
    29.         dsn = cx_Oracle.makedsn(ip, port, service_name=service_name)
    30.         connection = cx_Oracle.connect(db_username, db_password, dsn=dsn)

    31.         # 执行其他操作...
    32.         # 例如执行SQL查询、更新或插入数据

    33.     # 关闭游标和连接
    34.     cursor.close()
    35.     connection.close()
    36. except cx_Oracle.DatabaseError as e:
    37.     print(f"Error connecting to Oracle database: {e}")
    复制代码
    在上述示例代码中,你需要替换以下变量的值:

    db_username:Oracle数据库的用户名
    db_password:Oracle数据库的密码
    db_host:Oracle数据库的IP地址或主机名
    db_port:Oracle数据库的端口号
    db_service_name:Oracle数据库的服务名称
    table_name:包含连接信息的表名
    ip_column:存储IP地址的列名
    port_column:存储端口号的列名
    service_name_column:存储服务名称的列名
    请确保提供的用户名、密码和连接信息正确,并且表中的列名与代码中指定的列名一致。

    回复

    使用道具 举报

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

    本版积分规则

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

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

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

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