在Web服务器上通过python使用Microsoft SQL
我试图从一个挂架(基于粘贴器)Web服务器运行一些对数据库的查询,每次我尝试导入我正在使用的pymssql库时(顺便说一句),我都会遇到以下错误:在Web服务器上通过python使用Microsoft SQL,python,sql-server,pylons,paster,pymssql,Python,Sql Server,Pylons,Paster,Pymssql,我试图从一个挂架(基于粘贴器)Web服务器运行一些对数据库的查询,每次我尝试导入我正在使用的pymssql库时(顺便说一句),我都会遇到以下错误: tds_init_winsock: WSAEnumProtocols failed with 10055(WSAENOBUFS: No buffer space available.) 关于进口。我还尝试过使用sqlalchemy,当我尝试创建sqlalchemy引擎时,得到了完全相同的错误。我能做些什么来让它工作吗。我没有连接到Web服务器或py
tds_init_winsock: WSAEnumProtocols failed with 10055(WSAENOBUFS: No buffer space
available.)
关于进口。我还尝试过使用sqlalchemy,当我尝试创建sqlalchemy引擎时,得到了完全相同的错误。我能做些什么来让它工作吗。我没有连接到Web服务器或pymssql库,所以其他的都可以
环境资料:
我用的机器是一台32比特的win7台式机
服务器在PythonVirtualEnvironment中运行,但是pymssql库在虚拟环境中完美地工作,而不是在服务器上
更新:
更多的背景信息(和解释):
我不认为这是MSSQL问题,甚至在某种程度上也不是python问题。有两个原因:A)在出现此问题时,我和其他人仍然可以连接到MSSQL数据库;B)如果不是从服务器导入pymssql,则pymssql工作得非常好。不过,我确实认为这可能与python和_mssql处理套接字的方式和/或服务器处理套接字的方式有关。。。希望这能多帮点忙
提前感谢错误代码被翻译成“无可用缓冲区空间”,实际上是指(引用我刚才提到的MSDN页面):
无法对套接字执行操作
因为系统缺少
足够的缓冲区空间或因为
队伍排满了
实际上(如所解释的)通常指(引用我刚才提到的文章):
在大多数情况下,问题发生在
打开的套接字总数达到
一些神奇的数字。MS写道
该限值为3976
已打开插座,但似乎已打开
Win9x系统真正的限制是
更低
由于每个套接字在关闭后(该文章称为240秒)会保持“忙碌”相当长一段时间,因此在中等繁忙的服务器上很容易超过这个数字(无论在Windows 7中是什么),这并不奇怪,特别是因为桌面系统配置的套接字资源可能比真正的服务器系统少
那篇文章指出了解决这个问题的几种可能性,尽管它们已经过时了。但是,关键的一点是,这似乎与Python、Pylons、Paster或Pymssql无关——这完全是Windows系统配置和控制的问题。因此,您可能更幸运地在serverfault.com上询问,精通服务器的sysadms在哪里 错误代码被翻译成“没有可用的缓冲区空间”,实际上意味着(引用我刚才提到的MSDN页面):
无法对套接字执行操作
因为系统缺少
足够的缓冲区空间或因为
队伍排满了
实际上(如所解释的)通常指(引用我刚才提到的文章):
在大多数情况下,问题发生在
打开的套接字总数达到
一些神奇的数字。MS写道
该限值为3976
已打开插座,但似乎已打开
Win9x系统真正的限制是
更低
由于每个套接字在关闭后(该文章称为240秒)会保持“忙碌”相当长一段时间,因此在中等繁忙的服务器上很容易超过这个数字(无论在Windows 7中是什么),这并不奇怪,特别是因为桌面系统配置的套接字资源可能比真正的服务器系统少
那篇文章指出了解决这个问题的几种可能性,尽管它们已经过时了。但是,关键的一点是,这似乎与Python、Pylons、Paster或Pymssql无关——这完全是Windows系统配置和控制的问题。因此,您可能更幸运地在serverfault.com上询问,精通服务器的sysadms在哪里 好的。我终于让它完全工作了。如果pymssql是在python中的socket之后导入的,那么它似乎有一些问题,在web服务器上的sockets之前导入它有点可笑,所以我最终选择了pyodbc,它与pymssql语法惊人地相似。绝对是一个很好的折衷方案…好的。我终于让它完全工作了。如果pymssql是在python中的socket之后导入的,那么它似乎有一些问题,在web服务器上的sockets之前导入它有点可笑,所以我最终选择了pyodbc,它与pymssql语法惊人地相似。这绝对是一个很好的折衷方案…看起来有人发布了pymssql的安装程序,该安装程序在上修复了此问题。在运行此安装程序之前,请确保首先卸载pymssql,否则最终可能会从损坏的版本导入
如果您安装了egg,您应该能够通过从Python安装目录下的lib\site软件包(例如C:\Python26)中删除pymssql*目录来卸载它。看起来有人发布了一个pymssql安装程序,在上修复了此问题。在运行此安装程序之前,请确保首先卸载pymssql,否则最终可能会从损坏的版本导入
如果您安装了egg,您应该能够通过从Python安装目录下的lib\site软件包(例如C:\Python26)中删除pymssql*目录来卸载它。谢谢您的提示。但这似乎不是问题,目前只有大约40个连接打开。我去问问服务器故障。谢谢你的提示。但这似乎不是问题,目前只有大约40个连接打开。我去问问你的错误。