Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Databricks连接到SQL server的Python代码_Python_Sql_Databricks - Fatal编程技术网

从Databricks连接到SQL server的Python代码

从Databricks连接到SQL server的Python代码,python,sql,databricks,Python,Sql,Databricks,我正在尝试从Databricks执行一个python代码,它主要使用JDBC建立从python到sqlserver的连接 我使用了“jaydebeapi”python库,当我运行代码时,它会给出一个错误,即jaydebeapi抛出AttributeError:“\u jpype.PyJPField”对象没有属性“getStaticAttribute” 我在互联网上搜索,发现jaydebeapi中使用的Jpype库是问题所在,我将其降级为0.6.3版本 但我还是犯了同样的错误。有谁能告诉我如何进行

我正在尝试从Databricks执行一个python代码,它主要使用JDBC建立从python到sqlserver的连接

我使用了“jaydebeapi”python库,当我运行代码时,它会给出一个错误,即jaydebeapi抛出AttributeError:“\u jpype.PyJPField”对象没有属性“getStaticAttribute”

我在互联网上搜索,发现jaydebeapi中使用的Jpype库是问题所在,我将其降级为0.6.3版本

但我还是犯了同样的错误。有谁能告诉我如何进行更改并在databricks中运行


或者我可以使用其他库。

这是JayDeBeApi的一个已知问题,您可以在上查看该问题

由于0.6.3中的错误,私有变量作为接口的一部分被公开。0.6.3也有一个默认的类定制器,它自动创建一个属性来获取和设置方法是否匹配JavaBean模式。这个属性定制器是在许多常见的java.lang类已经加载之后加载的,并且不具有追溯性,因此只有在初始化器之后发生的用户加载的类才具有定制。私有变量错误会屏蔽属性定制器,因为属性定制器不会覆盖字段。一些库在不知不觉中访问私有变量,假设它们正在使用属性定制器。 定制程序是不必要的,并且会导致新程序员经常出错。错误行为已被删除,并且在0.7中默认禁用了有问题的属性自定义程序

向模块添加行以启用旧属性行为。但这将无法重新启用以前对私有变量的错误访问。因此,利用先前绕过java的getter/setter的行为的代码将需要使用反射API

要启用属性自定义程序,请使用

try:
   import jpype.beans
except ImportError:
   pass

希望这能有所帮助。

为什么不直接按照下面databricks的官方文档安装Microsoft JDBC驱动程序for SQL Server for Spark Connector,并参考使用JDBC connect SQL Server的Python示例代码

并将其与MS SQL Server的jdbc url连接 如果您使用的是Azure,则Azure Databricks的文档如下所示

对于Azure数据块 对于Azure数据块
谢谢,我是Python新手,上面的代码是否需要添加到.py脚本中,它实际运行的是jaydebeapi?谢谢Peter。这个项目已经在hdinsight集群上使用了jaydebeapi。我不想在代码上做太大的改动。我使用了一个类似的lib py2jdbc,它工作得很好。