【问题标题】:inserting and retrieving python dataframe in hana database在hana数据库中插入和检索python数据框
【发布时间】:2020-07-02 04:54:36
【问题描述】:

我有一个 python 数据框,我想直接插入到 HANA 数据库中,也想从数据库中读取它。

我试过这段代码:

from sqlalchemy import create_engine
engine = create_engine('hana+pyhdb://username:password@example.com:port')
my_df = pd.DataFrame([[1, 2], [3, 4], [5, 6], [7, 8]], columns=["A", "B"])
my_df.to_sql('table_name', con = engine, index = False, if_exists = 'replace')

错误:DBAPIError: (hdbcli.dbapi.Error) (4321, 'only secure connections are allowed')(此错误的背景:http://sqlalche.me/e/dbapi*

这是关于添加 ssl 证书的吗?如何在引擎中添加?

但是,我可以使用加密选项通过 Python API 正常连接:

conn = dbapi.connect(
    address="host",
    port=portnr,
    encrypt="true",
    user="user",
    password="pwd"
)

但是,如果我在这里传递这个连接对象:

my_df.to_sql('table_name', con = conn, index = False, if_exists = 'replace')

我仍然会收到错误消息。如何解决这个问题?

【问题讨论】:

  • 运行to_sql方法时遇到什么错误?
  • 我已经把它写在问题中了。这个 -> DBAPIError: (hdbcli.dbapi.Error) (4321, 'only secure connections are allowed') (此错误的背景:@ 987654322@)*

标签: python dataframe sqlalchemy hana sap-cloud-platform


【解决方案1】:

您使用的 HANA 数据库已启用安全连接。 因此,您需要在连接 URL 中传递 encrypt=true。如果证书是自签名的,您需要通过添加 sslvalidatecertificate=false 来忽略它

尝试以下操作:

connection_string = 'hana://%s:%s@%s:%s/?encrypt=true&sslvalidatecertificate=false' % (hdb_user, hdb_password, hdb_host, hdb_port)
engine = create_engine(connection_string)

【讨论】:

    猜你喜欢
    • 2019-03-06
    • 1970-01-01
    • 1970-01-01
    • 2014-01-06
    • 1970-01-01
    • 2013-09-30
    • 1970-01-01
    • 1970-01-01
    • 2012-11-09
    相关资源
    最近更新 更多