Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.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
Python 3.x 从python3-pyodbc(linux)连接到远程计算机上的firebird 2.5(windows)ODBC DSN_Python 3.x_Odbc_Firebird_Pyodbc - Fatal编程技术网

Python 3.x 从python3-pyodbc(linux)连接到远程计算机上的firebird 2.5(windows)ODBC DSN

Python 3.x 从python3-pyodbc(linux)连接到远程计算机上的firebird 2.5(windows)ODBC DSN,python-3.x,odbc,firebird,pyodbc,Python 3.x,Odbc,Firebird,Pyodbc,我正在尝试通过ODBC连接到客户的数据库。ODBC DSN是在Windows计算机上设置的。我不知道DB的路径或DB名称,因此我必须依赖DSN 从总体上看,这似乎是不可能的,但我知道普及ODBC允许它,而且MSSQL似乎也允许它 问题是,Firebird 2.5是否允许这样做?如果有,你能帮我处理连接字符串吗 我在本地windows计算机上设置了Firebird DB,创建了ODBC DSN(并在本地测试了连接) 然后,我测试了unixODBC(isql)和pythonPyODBC的连接,它们都

我正在尝试通过ODBC连接到客户的数据库。ODBC DSN是在Windows计算机上设置的。我不知道DB的路径或DB名称,因此我必须依赖DSN

从总体上看,这似乎是不可能的,但我知道普及ODBC允许它,而且MSSQL似乎也允许它

问题是,Firebird 2.5是否允许这样做?如果有,你能帮我处理连接字符串吗

我在本地windows计算机上设置了Firebird DB,创建了ODBC DSN(并在本地测试了连接)

然后,我测试了unixODBC(isql)和pythonPyODBC的连接,它们都连接良好,但我必须指定数据库位置、名称和凭据


我需要从python 3.6 pyodbc(linux)连接到远程(windows)Firebird ODBC DSN

您想要的是不可能的*。ODBC DSN仅存在于定义它的计算机上。它基本上是一种与应用程序分离的连接配置,应用程序通过名称引用该配置

你不能远程使用DSN(如果可能的话,那将是一个相当大的安全漏洞)。您需要在特定计算机上定义DSN(或使用无DSN的连接字符串),以便能够从该计算机使用它

假定使用Python,请考虑使用FDB或pyFielBydSQL,而不是使用pyObc.



*或者至少,如果远程计算机上没有一些中间件服务在您的应用程序和远程计算机上的ODBC DSN之间进行调解,那么这是不可能的。

您想要的是不可能的*。ODBC DSN仅存在于定义它的计算机上。它基本上是一种与应用程序分离的连接配置,应用程序通过名称引用该配置

你不能远程使用DSN(如果可能的话,那将是一个相当大的安全漏洞)。您需要在特定计算机上定义DSN(或使用无DSN的连接字符串),以便能够从该计算机使用它

假定使用Python,请考虑使用FDB或pyFielBydSQL,而不是使用pyObc.



*或者至少,如果远程计算机上没有一些中间件服务在您的应用程序和远程计算机上的ODBC DSN之间进行调解,这是不可能的。

如果您将Firebird的应用程序扩展到ODBC领域,那么“如果Firebird允许”,这是毫无疑问的。现在您必须研究这样的问题:“是否有程序/服务将本地ODBC源共享到网络中,如远程注册表共享注册表,如远程文件夹共享文件夹,它们是某种远程ODBC”。既然你说你必须指定凭据——你使用Firebird网络,你的Linux盒通过Firebird协议连接,然后在Linux盒内转换成Python API或Linux ODBC API等。也许你最好连接pyFDB或其他FDB目标库你真正的问题是什么?隐藏文件名并不难-请参阅Firebird文件夹中的
alias.conf
。但必须指定登录名和密码。否则,任何匿名(流氓)程序都将能够将w/o凭据连接到Firebird服务器并进行DOS攻击,例如使Windows计算机磁盘溢出。Arioch,感谢您的回复。我所做的测试直接从unixODBC到firebird。因此,它不会影响远程计算机上的ODBC DSN。我无法访问凭据或位置,因此我必须使用远程计算机上的DSN,该DSN已与DB的凭据和位置一起保存。我将看一看pyFDB,看看它是否可以连接到远程DSNI。我对ODBC几乎一无所知,但常识适用。我们要么在一个协议的范围内工作,要么在另一个协议的范围内工作。我们可以通过HTTP、FTP或SMB下载文件,也可以是相同的文件。虽然文件是相同的,甚至可能是用户名,但协议是不同的。ODBC和Firebird也应该如此——远程连接是在一个协议中进行的,或者是在另一个协议中进行的。然而,匿名免费所有远程连接(没有任何凭据)无论如何都不是理想的配置。可以在DSN属性中检查DB文件名。登录/pwd是否可以通过API以某种方式提取?我同意凭据问题。它保存在DSN中,所以是的,如果您可以通过DSN从远程机器进行连接,这确实会导致滥用。实际上这根本不是一个好办法。我们会将此信息传递给客户。为了我自己的理智,你能连接到一个远程Firebird ODBC DSN吗?如果你把我们的Firebird应用到ODBC领域,毫无疑问“如果Firebird允许的话”。现在您必须研究这样的问题:“是否有程序/服务将本地ODBC源共享到网络中,如远程注册表共享注册表,如远程文件夹共享文件夹,它们是某种远程ODBC”。既然你说你必须指定凭据——你使用Firebird网络,你的Linux盒通过Firebird协议连接,然后在Linux盒内转换成Python API或Linux ODBC API等。也许你最好连接pyFDB或其他FDB目标库你真正的问题是什么?隐藏文件名并不难-请参阅Firebird文件夹中的
alias.conf
。但必须指定登录名和密码。否则,任何匿名(流氓)程序都将能够将w/o凭据连接到Firebird服务器并进行DOS攻击,例如使Windows计算机磁盘溢出。Arioch,感谢您的回复。我所做的测试直接从unixODBC到firebird。因此,它不会影响远程计算机上的ODBC DSN。我无法访问凭据或位置,因此我必须使用远程计算机上的DSN,该DSN已与DB的凭据和位置一起保存。我将查看pyFDB,看看它是否可以连接到远程DSNI know next t