用python连接SQL server数据库
python连接SQL server用到的是pymssql模块。
1.首先安装(pip install pymssql)
2.创建连接对象
- 使用
connect
创建连接对象 connect.cursor
创建游标对象,SQL语句的执行基本都在游标上进行cursor.executeXXX
方法执行SQL语句,cursor.fetchXXX
获取查询结果等- 调用
close
方法关闭游标cursor
和数据库连接
pymssql.connect(pymssql.connect(server='.',user='',password='',database='',timeout=0,login_timeout=60,charset ='UTF-8',as_dict=False,host='',appname=None,port ='1433',conn_properties,autocommit=False,tds_version='7.1' )
用于创建到数据库的连接的构造函数。返回一个 Connection
对象。
connect的参数意义:
参数: |
|
---|
3.连接对象的属性(connection对象)
Connection.
autocommit
(status)-
其中status是一个布尔值。此方法打开或关闭自动提交模式。
默认情况下,自动提交模式是关闭的,意味着如果更改的数据要保存在数据库中,则每个事务都必须显式提交。
你可以打开自动提交模式,这意味着每一个操作一旦成功就立即提交。
DB-API 2.0的pymssql扩展。
Connection.
close
()-
关闭连接。
Connection.
cursor
()-
返回一个游标对象,该对象可用于查询并从数据库中获取结果。
Connection.
commit
()-
提交当前事务。如果将自动提交保留为缺省值,则必须调用此方法来保存数据
False
。4.Cusor对象方法(SQL 语句的调用)
Cursor.
close
()-
关闭游标。从这一点来看,光标不可用。
Cursor.
execute
(operation)Cursor.
execute
(operation,params)-
operation是一个字符串,如果指定params,它是一个简单的值,一个元组,一个字典或
None
。对数据库执行操作,可能会使用提供的值替换参数占位符。这应该是创建SQL命令的首选方法,而不是手动串联字符串,这是潜在的SQL注入攻击的原因。此方法接受与Python的内置字符串插值运算符类似的格式。但是,由于格式和类型转换是在内部处理的,因此只支持
%s
和%d
占位符。两个占位符在功能上都是等效的。如果您提供params字典,则支持键控占位符。
如果您
execute()
使用一个参数进行调用,该%
符号会失去其特殊含义,因此您可以像往常一样在查询字符串中使用它,例如在LIKE
运算符中。您必须先致电
Connection.commit()
,execute()
否则您的数据将不会保留在数据库中。您也可以设置connection.autocommit
是否希望自动完成。DB-API需要此行为,如果您不喜欢它,请_mssql
改为使用 模块。
Cursor.
executemany
(operation,params_seq )-
operation是一个S语句QL字符串,params_seq是一系列数据元组。对参数序列中的每个元素重复执行数据库操作。
例如:
Cursor.
fetchone
()-
返回查询到一条语句,即一个元祖(行)。
Cursor.
fetchmany
(size = None )-
返回查询到size条语句
Cursor.
fetchall
()-
返回查询到所有的元祖,为一个list
Cursor.
nextset
()-
此方法使光标跳到下一个可用结果集,丢弃当前集中的所有剩余行。
True
如果下一个结果可用,None
则返回值,如果没有。
Cursor.
__iter__
()Cursor.
next
()-
这些方法有助于Python迭代器协议。你很可能不会直接调用它们,而是通过使用迭代器间接调用它们。
DB-API 2.0的pymssql扩展。
Cursor.
setinputsizes
()Cursor.
setoutputsize
()-
这些方法什么都不做,正如DB-API规范所允许的。
实例:
import pymssql #连接本地数据库 con = pymssql.connect(host = 'localhost',user = '',password = '',database = 'DB_STU') #创建cursor对象 cur = con.cursor()