Sye*_*tar 5 python linux unixodbc pyodbc freetds
我已成功使用pyodbc/freeTDS从和ubuntu机器连接到sql server
设置工作正常,但在一段时间后,我收到以下错误
[错误](服务器) - ('IM002','[IM002] [unixODBC] [驱动程序管理器]未找到数据源名称,并且未指定默认驱动程序(0)(SQLDriverConnect)')
这是我的配置
ODBC.INI
[SERVERONE]
Description="test"
Driver=/usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so
Servername=sqlserver
Database=DBONE
[SERVERTWO]
Description="test"
Driver=/usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so
Servername=sqlserver
Database=DBTWO
Run Code Online (Sandbox Code Playgroud)
.freeTDS.conf
[global]
tds version = 8.0
[sqlserver]
host = <SERVER IP>
instance = R2TEST
port = 1070
tds version = 8.0
text size = 2000000
Run Code Online (Sandbox Code Playgroud)
python模块
class base(object):
_connection = None
def __init__(self):
try:
self._conn_string = ENV.DB.CONNSTRING
logg.debug('using connection string %s'%self._conn_string)
self._connection = pyodbc.connect(self._conn_string)
except Exception:
raise
def _refresh_conn(self):
self._connection = None
self._connection = pyodbc.connect(self._conn_string)
class getConf(base):
def __init__(self):
super(SamlConf,self).__init__()
def getClientSamlConf(self, client):
_query = "EXEC DBONE..getConfig '%s'" % (client)
logg.info(_query)
row = None
try:
_cursor = self._connection.cursor()
_cursor.execute(_query)
_row = _cursor.fetchone()
if len(_row) >0 and _row[0]:
logg.info(_row)
row = ClienObj(_row)
_cursor.commit()
self._refresh_conn()
except Exception,ex:
import sys
raise DatabaseCommunicationError('Communication to the database failed '), None, sys.exc_info()[2]
return
return row
Run Code Online (Sandbox Code Playgroud)
这里使用的连接字符串是
DSN = SERVERONE; UID =用户; PWD =密码
我怀疑这里处理连接的方式是原因,但我不确定.
此外,设置在一段时间后自动开始工作并循环通过它
工作>不工作>工作
编辑 如果这件事我的堆栈的其他组件是主管,gunicorn(gevent async)和virtualenv
编辑2
我注意到的另一件事是当应用程序长时间没有流量时会出现问题
| 归档时间: |
|
| 查看次数: |
246 次 |
| 最近记录: |