【问题标题】:Pandas connect to Oracle Db without connection stringPandas 在没有连接字符串的情况下连接到 Oracle Db
【发布时间】:2018-12-03 10:01:32
【问题描述】:

我需要从 Oracle 数据库(使用 pandas)读取数据。 我正在使用 cx_oracle 库。教程建议使用此指令创建连接:

connection = cx_Oracle.connect(username, password, connectString)

我没有连接字符串,只有主机、db_name、用户和密码。 如何创建连接或如何创建连接字符串?

编辑: 我有:

  • 主机名
  • 端口
  • 服务名称(不是 SID)
  • 用户和密码

【问题讨论】:

    标签: python oracle pandas connection-string cx-oracle


    【解决方案1】:

    您需要以下变量(IP、端口、SID、用户名、密码)。创建游标后,您可以使用它来插入和查询数据库。

    def dbquery(query_db, cred_db):
        """
        This function queries the Database
        """
        curs = cred_db.cursor()
        curs.execute(query_db)
        rows = curs.fetchall()
        curs.close()
        return rows
    
    connectString= cx_Oracle.makedsn(IP, PORT, SID)
    DB_CRED = cx_Oracle.connect(USERNAME, PASSWORD, connectString)
    QUERY = "SELECT * FROM something WHERE blah blah"
    RES = dbquery(QUERY, DB_CRED)
    

    使用上面的代码,只需将您的查询分配给 QUERY 变量

    【讨论】:

    • 我没有sid,只有服务名。
    • 我找到了带有“从 v$thread 中选择实例”的 SID;现在,我如何在 pandas 中使用光标?
    • 已修改答案以包含使用光标的功能
    • 服务名使用connectString= cx_Oracle.makedsn(IP, PORT, service_name=SERVICENAME)
    【解决方案2】:

    试试 Oracle 的 Easy Connect 语法:

    connection = cx_Oracle.connect(username, password, 'HOSTNAME:PORT/SERVICENAME')
    

    请参阅 Oracle 文档Understanding the Easy Connect Naming Method

    或使用:

    connectString = cx_Oracle.makedsn(IP, PORT, service_name=SERVICENAME)
    connection = cx_Oracle.connect(username, password, connectString)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-16
      • 2021-02-09
      相关资源
      最近更新 更多