用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的参数意义:

参数:
  • server(str) - 数据库主机
  • user(str) - 数据库用户连接为
  • password(str) - 用户密码
  • database(str) - 最初连接到的数据库
  • timeout(int) - 以秒为单位的查询超时,默认为0(无超时)
  • login_timeout(int) - 以秒为单位的连接和登录超时,默认为60
  • charset(str) - 用来连接数据库的字符集
  • conn_properties - 连接建立时发送到服务器的SQL查询。可以是字符串或其他类型的字符串迭代。默认值:请参阅_mssql.connect()
  • as_dict(布尔) - 行是否应该作为字典而不是元组返回
  • appname(str) - 设置用于连接的应用程序名称
  • port(str) - 用于连接服务器的TCP端口
  • autocommit(布尔) - 是否使用默认的自动提交模式
  • tds_version(str) - 要使用的TDS协议版本。

3.连接对象的属性(connection对象)

  

  Connection.autocommitstatus

其中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.executemanyoperationparams_seq 

operation是一个S语句QL字符串,params_seq是一系列数据元组。对参数序列中的每个元素重复执行数据库操作。

例如:

 

Cursor.fetchone

返回查询到一条语句,即一个元祖(行)。

Cursor.fetchmanysize = 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()

  

posted @ 2020-04-10 21:17  _STAyy  阅读(1927)  评论(0编辑  收藏  举报