要求:使用python访问远程服务器中的SQL Server,并且插入数据
环境:python2.7; windows XP;sql server 2000
参数(虚拟):服务器ip=1.2.3.4; 端口port=1;
访问sql server的库,知道的有pyodbc以及pymssql,但是pymssql最高版本到py2.6,所以选择pyodbc。第一次使用python访问数据库,折腾了很久,主要是参数中,远程服务器和端口的格式不知道。
安装即可使用。import pyodbc
具体使用方法可以参考帮助文档(GettingStarted, Wiki),这里只记录一下本人在使用过程中遇到的麻烦。
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).
改为
'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