如何使用Python 3管理Windows上的dsn ?



我更喜欢用dsn连接数据库。我不喜欢把用户名和密码放在代码或配置文件中,也不喜欢可信连接方法。

当我谷歌如何用Python管理dsn时,我得到了下面的一些变化。

import ctypes
ODBC_ADD_DSN = 1        # Add data source
ODBC_CONFIG_DSN = 2     # Configure (edit) data source
ODBC_REMOVE_DSN = 3     # Remove data source
ODBC_ADD_SYS_DSN = 4    # add a system DSN
ODBC_CONFIG_SYS_DSN = 5 # Configure a system DSN
ODBC_REMOVE_SYS_DSN = 6 # remove a system DSN
def create_sys_dsn(driver, **kw):
"""Create a  system DSN
Parameters:
driver - ODBC driver name
kw - Driver attributes
Returns:
0 - DSN not created
1 - DSN created
"""
nul = chr(32)
attributes = []
for attr in kw.keys():
attributes.append("%s=%s" % (attr, kw[attr]))

if (ctypes.windll.ODBCCP32.SQLConfigDataSource(0, ODBC_ADD_SYS_DSN, driver, nul.join(attributes))):
return True
else:
print(ctypes.windll.ODBCCP32.SQLInstallerError)
return False
if __name__ == "__main__":
if create_sys_dsn("SQL Server",SERVER="server name", DESCRIPTION="SQL Server DSN", DSN="SQL SERVER DSN", Database="ODS", Trusted_Connection="Yes"):
print ("DSN created")
else:
print ("DSN not created")

当您运行此命令时,我将得到如下输出:

<_FuncPtr object at 0x0000028E274C8930>

我有两个问题

  1. 我不习惯通过API与操作系统一起工作,我找不到很多不是c++的文档或使用示例。也就是说,代码运行时,它永远不会返回true。
  2. 我不知道如何让它踢出错误信息,所以我可以诊断问题。这段代码在日志中没有留下任何足迹,所以在事件查看器中没有显示任何错误。

如何解决这个问题?我走这条路对吗?用Python连接数据库的最佳实践到底是什么?

这个问题实际上有两个答案。

  1. 你可以在Python中调用PowerShell脚本。

  2. 你不。您在连接字符串中使用可信连接。

我选择了选项2。

相关内容

  • 没有找到相关文章

最新更新