python连接sql server2008教程,Python连接Mssql基础教程之Python库pymssql

前言

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

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

本文将详细介绍关于Python连接Mssql之Python库pymssql的相关内容,下面话不多说了,来一起看看详细的介绍吧

连接数据库

pymssql连接数据库的方式和使用sqlite的方式基本相同:

使用connect创建连接对象

connect.cursor创建游标对象,SQL语句的执行基本都在游标上进行

cursor.executeXXX方法执行SQL语句,cursor.fetchXXX获取查询结果等

调用close方法关闭游标cursor和数据库连接

import pymssql

# server 数据库服务器名称或IP

# user 用户名

# password 密码

# database 数据库名称

conn = pymssql.connect(server, user, password, database)

cursor = conn.cursor()

# 新建、插入操作

cursor.execute("""

IF OBJECT_ID('persons', 'U') IS NOT NULL

DROP TABLE persons

CREATE TABLE persons (

id INT NOT NULL,

name VARCHAR(100),

salesrep VARCHAR(100),

PRIMARY KEY(id)

)

""")

cursor.executemany(

"INSERT INTO persons VALUES (%d, %s, %s)",

[(1, 'John Smith', 'John Doe'),

(2, 'Jane Doe', 'Joe Dog'),

(3, 'Mike T.', 'Sarah H.')])

# 如果没有指定autocommit属性为True的话就需要调用commit()方法

conn.commit()

# 查询操作

cursor.execute('SELECT * FROM persons WHERE salesrep=%s', 'John Doe')

row = cursor.fetchone()

while row:

print("ID=%d, Name=%s" % (row[0], row[1]))

row = cursor.fetchone()

# 也可以使用for循环来迭代查询结果

# for row in cursor:

# print("ID=%d, Name=%s" % (row[0], row[1]))

# 关闭连接

conn.close()

注意:例子中查询操作的参数使用的%s而不是’%s’,若参数值是字符串,在执行语句时会自动添加单引号

游标使用注意事项

一个连接一次只能有一个游标的查询处于活跃状态,如下:

c1 = conn.cursor()

c1.execute('SELECT * FROM persons')

c2 = conn.cursor()

c2.execute('SELECT * FROM persons WHERE salesrep=%s', 'John Doe')

print( "all persons" )

print( c1.fetchall() ) # 显示出的是c2游标查询出来的结果

print( "John Doe" )

print( c2.fetchall() ) # 不会有任何结果

为了避免上述的问题可以使用以下两种方式:

创建多个连接来保证多个查询可以并行执行在不同连接的游标上

使用fetchall方法获取到游标查询结果之后再执行下一个查询, 如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值