要求:使用python访问远程服务器中的SQL Server,而且插入数据 html
环境:python2.7; windows XP;sql server 2000 python
参数(虚拟):服务器ip=1.2.3.4; 端口port=1; sql
访问sql server的库,知道的有pyodbc以及pymssql,可是pymssql最高版本到py2.6,因此选择pyodbc。第一次使用python访问数据库,折腾了好久,主要是参数中,远程服务器和端口的格式不知道。 数据库
pyodbc下载地址:http://code.google.com/p/pyodbc/downloads/list windows
安装便可使用。import pyodbc 服务器
具体使用方法能够参考帮助文档(GettingStarted, Wiki),这里只记录一下本人在使用过程当中遇到的麻烦。 python2.7
cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER=1.2.3.4;DATABASE=testdb;UID=me;PWD=pass')不知道,网上不少都没有说端口怎么处理,也不知道做为参数的端口该怎么写。看到有将 “PORT=1”添加到参数字符串中的,可是个人老是没有成功。
本身在本地安装了Sql Server 2000,在dos下使用sqlcmd访问远程数据库1.2.3.4成功,因此应该是本身的参数写错了。以前connect函数的参数为 函数
'DRIVER={SQL Server};SERVER=1.2.3.4;PORT=1;DATABASE=testdb;UID=me;PWD=pass'
各类错,错误编号有(17)以及(53). google
改成 spa
'DRIVER={SQL Server};SERVER=1.2.3.4,1;DATABASE=testdb;UID=me;PWD=pass'
链接成功。
不过本地的话,若SERVER=localhost,还没连上,暂时没有去实验链接本地sqlServer。
def AccessSqlServer(serverName, portNumber, databaseName, userName, password, tableName, phone, content): connStr = '' connStr += 'DRIVER={SQL Server};' connStr += 'SERVER=' + serverName + ',' + portNumber + ';' connStr += 'DATABASE=' + databaseName + ';' connStr += 'UID=' + userName + ';' connStr += 'PWD=' + password try: conn = pyodbc.connect(connStr) except Exception as e: return False try: cursor=conn.cursor() except Exception as e: return False execStr = "insert into " + tableName + " (phone, content) values ({0}, '{1}') ".format(phone, content) try: cursor.execute(execStr) conn.commit() #must commit except Exception as e: return False conn.close() return True