尽管有很多谷歌搜索,但还没有找到满意的答案。我也是web2py和SQL Server的新手,所以也许我从一开始就以错误的方式解决了这个问题,并且除了我已经设置的之外还有一个更好的解决方案。无论如何:
我正在将一个web2py应用程序从一个MSSQL Server连接移动到另一个MSSQL Server连接,因为出于体制原因我不应该直接"看到"新的连接字符串,包括密码等。
我已经通过让所有者隐藏了我可以运行但没有看到任何内容的.pyc文件中的所有细节来解决这个外部web2py问题。
DATA_CONNECTION = imp.load_compiled('DATA_CONNECTION', 'N:\\location')
cnxn = DATA_CONNECTION.getMyConnection() #produces a pyodbc connection
我的问题是,如何让web2py DAL接受同样的' cnxn'没有将.pyc文件中隐藏的所有受保护信息输入连接字符串?
这是我之前使用的连接字符串(使用我的网络凭据作为用户/ pw)。新连接在.pyc文件中有一个我无法看到的显式用户名/ pw:
db = DAL('mssql://DRIVER={SQL Server};SERVER= XXX-011;DATABASE=MyDB;TRUSTED_CONNECTION=yes;migrate_enabled = False')
答案 0 :(得分:0)
web2py DAL需要连接字符串,而不是pyodbc连接对象。也许创建当前.pyc文件的人可以创建一个新文件来返回DAL
对象而不是pyodbc对象。
另一方面,您可能会试图说服他们使用.pyc文件并没有真正增加安全性,因为有许多工具可用于反编译.pyc文件。此外,一旦你有了pyodbc对象,你或许也可以从中提取连接字符串。除了试图隐藏连接字符串之外,还有更好的方法来控制数据库访问和权限。