Python连接Mssql基础教程之Python库pymssql 前⾔
pymssql模块是⽤于sql server数据库(⼀种数据库通⽤接⼝标准)的连接。另外pyodbc不仅限于SQL server,还包括Oracle,MySQL,Access,Excel等。
本⽂将详细介绍关于Python连接Mssql之Python库pymssql的相关内容,下⾯话不多说了,来⼀起看看详细的介绍吧连接数据库
pymssql连接数据库的⽅式和使⽤sqlite的⽅式基本相同:
使⽤connect创建连接对象
connect.cursor创建游标对象,SQL语句的执⾏基本都在游标上进⾏
调⽤close⽅法关闭游标cursor和数据库连接
import pymssql
# server  数据库服务器名称或IP
# user  ⽤户名
# password 密码
# database 数据库名称
conn = t(server, user, password, database)
cursor = conn.cursor()
# 新建、插⼊操作
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)
)
""")
"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()⽅法
connmit()
# 查询操作
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()
c2 = conn.cursor()
print( "all persons" )
print( c1.fetchall() ) # 显⽰出的是c2游标查询出来的结果
print( "John Doe" )
print( c2.fetchall() ) # 不会有任何结果
为了避免上述的问题可以使⽤以下两种⽅式:
创建多个连接来保证多个查询可以并⾏执⾏在不同连接的游标上
excel连接sql数据库教程
使⽤fetchall⽅法获取到游标查询结果之后再执⾏下⼀个查询,如下:
c1_list = c1.fetchall()
c2_list = c2.fetchall()
游标返回⾏为字典变量
上述例⼦中游标获取的查询结果的每⼀⾏为元组类型,
可以通过在创建游标时指定as_dict参数来使游标返回字典变量,
字典中的键为数据表的列名
conn = t(server, user, password, database)
cursor = conn.cursor(as_dict=True)
for row in cursor:
print("ID=%d, Name=%s" % (row['id'], row['name']))
conn.close()
使⽤with语句(上下⽂管理器)
可以通过使⽤with语句来省去显⽰的调⽤close⽅法关闭连接和游标
t(server, user, password, database) as conn:
with conn.cursor(as_dict=True) as cursor:
for row in cursor:
print("ID=%d, Name=%s" % (row['id'], row['name']))
调⽤存储过程
pymssql 2.0.0以上的版本可以通过cursor.callproc⽅法来调⽤存储过程
t(server, user, password, database) as conn:
with conn.cursor(as_dict=True) as cursor:
# 创建存储过程
CREATE PROCEDURE FindPerson
@name VARCHAR(100)
AS BEGIN
SELECT * FROM persons WHERE name = @name
END
""")
# 调⽤存储过程
cursor.callproc('FindPerson', ('Jane Doe',))
for row in cursor:
print("ID=%d, Name=%s" % (row['id'], row['name']))
总结
以上就是这篇⽂章的全部内容了,希望本⽂的内容对⼤家的学习或者⼯作具有⼀定的参考学习价值,如果有疑问⼤家可以留⾔交流,谢谢⼤家对的⽀持。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。