Python连接SQL Server入门

原创 2016年05月30日 23:02:50

Python连接SQL Server入门

模块

import pyodbc

模块说明

pyodbc模块是用于odbc数据库(一种数据库通用接口标准)的连接,不仅限于SQL server,还包括Oracle,MySQL,Access,Excel等。

另外除了pyodbc还有其他几种连接SQL server的模块,感兴趣的可以在这里找到:https://wiki.python.org/moin/SQL%20Server

连接

传递odbc标准的连接字符串给 connect 方法即可:

对于SQL server写法如下:

conn = pyodbc.connect(r'DRIVER={SQL Server Native Client 11.0};SERVER=test;DATABASE=test;UID=user;PWD=password')

注意:官方文档中使用了port参数,而官方wiki中连接SQL server是没有port参数的。实际连接中发现加了port参数连不上(08001错误),port要写在server参数中,逗号分割,如:

conn = pyodbc.connect(r'DRIVER={SQL Server Native Client 11.0};SERVER=192.168.1.1,3433;DATABASE=test;UID=user;PWD=password')

注意:不同的SQL server版本对应的DRIVER字段不同。对应关系如下:

  • {SQL Server} - released with SQL Server 2000
  • {SQL Native Client} - released with SQL Server 2005 (also known as version 9.0)
  • {SQL Server Native Client 10.0} - released with SQL Server 2008
  • {SQL Server Native Client 11.0} - released with SQL Server 2012

注意:使用pyodbc需要安装微软官方的Native Client(没有安装会报错IM002),安装SQL server management studio会自动附带安装(控制面板里可以看到安装的版本)。如果没有安装过需要在https://msdn.microsoft.com/en-us/data/ff658533.aspx下载安装(sqlncli.msi)。建议选择与远程数据库版本相对应的Native Client。如果本地安装的Native Client是高版本,则DRIVER={SQL Server Native Client 11.0}需要填写的是本地的高版本。

使用pyodbc连接其他支持odbc的数据库方式可参考pyodbc官方wiki。

获取内容

连接之后需要先建立cursor:

cursor = conn.cursor()

使用 execute 方法运行SQL语句:

cursor.execute("select user_id, user_name from users")

execute 返回的仍然是cursor

使用 fetchone() 方法依次获取结果中需要的内容:

row = cursor.fetchone()
if row:
    print(row)

print('name:', row[1])         # access by column index
print('name:', row.user_name)  # or access by name

使用fetchall()直接获取所有execute结果作为一个list:

cursor.execute("select user_id, user_name from users")
rows = cursor.fetchall()
for row in rows:
    print(row.user_id, row.user_name)

由于execute返回的是cursor本身,所以如果你需要一次直接获取所有内容可以直接使用cursor本身来获取:

cursor.execute("select user_id, user_name from users"):
for row in cursor:
    print(row.user_id, row.user_name)

增删改

增删改数据库的内容也是直接传递SQL语句给execute方法。但要注意运行之后需要用commit提交变更:

cursor.execute("insert into products(id, name) values ('pyodbc', 'awesome library')")
conn.commit()
cursor.execute("delete from products where id <> ?", 'pyodbc')
print('Deleted {} inferior products'.format(cursor.rowcount))
conn.commit()

参考资料:

  1. 《pyodbc 官方文档》http://mkleehammer.github.io/pyodbc/
  2. 《pyodbc官方wiki》https://github.com/mkleehammer/pyodbc/wiki
  3. 《pyodbc的简单使用》http://my.oschina.net/zhengyijie/blog/35587
版权声明:本文为博主原创文章,未经博主允许不得转载。

Python链接SQLServer数据库--pymssql使用基础

链接数据库 pymssql连接数据库的方式和使用sqlite的方式基本相同: 1、使用connect创建连接对象 2、connect.cursor创建游标对象,SQL语句的执行基本都在游标上进行...

python如何操作Sql Server 2008数据库

最近由于公司的一个项目需要,需要使用Sql Server 2008数据库,开发语言使用Python,并基于windows平台上的Wing IDE4.0进行。         之前并未使用过Sql Se...

python操作sqlserver

python连接sqlserver

Python连接Sqlserver数据库

1.因为其它的安装包我都已经安装好了,这里只下载pymssql依赖包 pip install pymssql 2.编写连接代码import os,pymssqlserver="#######"...

python如何操作Sql Server 2008数据库

最近由于公司的一个项目需要,需要使用Sql Server 2008数据库,开发语言使用Python,并基于windows平台上的Wing IDE4.0进行。         之前并未使用过Sql S...
  • ab198604
  • ab198604
  • 2013年04月24日 14:21
  • 10558

python连接sql server并执行查询操作

python操作sql server...

Python 连接SQLSERVER

1. Python连接mssql ubuntu linux上 1.1 sudo apt-get install python 1.2 重启终端 1.3 sudo apt-get --ass...

Linux下python连接sqlserver

最近需要获取一批mssql服务器上的相关数据进行分析,由于需要每天定时获取mssql的数据,并进行报警,而且平时都是在linux下工作,这可犯愁了,google发现一个类似MySQLdb的python...
  • chwlfg
  • chwlfg
  • 2015年09月17日 21:28
  • 1925

Python实现SQL模拟功能

博客核心内容: Python实现insert插入功能 Python实现delete删除功能(remove、rename) Python实现update更新功能(remove、rename) Pytho...

Python访问SQL Server数据库

将下面code保存到MSSQL.py文件,以供程式调用: #coding=utf-8 #!/usr/bin/env python import pymssql import ConfigPars...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Python连接SQL Server入门
举报原因:
原因补充:

(最多只允许输入30个字)