我正在从用户那里读取SQL Server数据库的连接字符串,这里用randomstring表示。当我将randomstring打印到控制台时,它看起来很完美,我已经检查了十几次。但是,连接失败并带有
pypyodbc.Error:(' IM002',' [IM002] [Microsoft]
如果我将完全相同的字符串显式传递给游标,则连接正常。我是否需要对字符串变量进行特定的操作才能使用它?
free
编辑:print(randomstring)输出:
pypyodbc.connect(driver =' {SQL Server}',server ='(local)',database =' Audit',uid =& #39; sa',pwd ='密码')
答案 0 :(得分:2)
首先要注意的是,你的第二个(注释掉的)示例没有连接"显式[连接]字符串",它使用了一系列关键字参数 (" kwargs")指定driver
,server
等。注意关键字参数形式之间的细微差别......
self.conn = pypyodbc.connect(driver='{SQL Server}', server='(local)', database='Audit', uid='sa', pwd='password')
...和连接字符串形式:
self.conn = pypyodbc.connect('driver={SQL Server};server=(local);database=Audit;uid=sa;pwd=password')
现在,如果您的randomstring
变量确实包含
pypyodbc.connect(driver='{SQL Server}', server='(local)', database='Audit', uid='sa', pwd='password')
那么它肯定不是一个有效的ODBC连接字符串。即使它只包含
driver='{SQL Server}', server='(local)', database='Audit', uid='sa', pwd='password'
仍然不是有效的连接字符串,因为项目以逗号(不是分号)分隔,并且值周围有引号。在将randomstring
值传递给.connect
方法之前,您需要将In [220]: arr = np.arange(5*5*3).reshape(5,5,3)
值的内容转换为正确的ODBC连接字符串。