pyodbc,运行查询的 SQL,非常简单:

import pyodbc

connection = pyodbc.connect(‘DRIVER={SQL Server Native Client 10.0};SERVER=127.0.0.1;DATABASE=DB_name;UID=User_Name;PWD=PassWord‘)

curs = connection.execute(‘select * from table‘)

#curs.fetchone()

curs.fetchall()

pyodbc的基本用法:

先导入:from pyodbc import connect;

产生连接实例:Conn = connect(DBCONNECTSTR);

产生游标:cur = Conn.cursor();

执行游标命令:cur.execute()、cur.commit()、cur.rollback()之类;

关闭游标:cur.close();

关闭连接实例:Conn.close()。

以上6个步骤都是必要的。

如果仅仅是查询,可以直接使用实例直接运行excute命令就可以了,可以不创建游标,那么3、4、5步都可以省略。

上面这些内容网上一大堆教程,我就不多说了。(DRY=Donot Repeat Yourself)

不过网上很多文章都是误导,例如:Python连接数据库-pyodbc

里面说运行存储过程使用 callproc() 方法。

提供 connection 和 cursor 的方法列表:

>>> dir(Conn)

[‘__class__‘, ‘__delattr__‘, ‘__doc__‘, ‘__enter__‘, ‘__exit__‘, ‘__format__‘, ‘__getattribute__‘, ‘__hash__‘, ‘__init__‘, ‘__new__‘, ‘__reduce__‘, ‘__reduce_ex__‘, ‘__repr__‘, ‘__setattr__‘, ‘__sizeof__‘, ‘__str__‘, ‘__subclasshook__‘, ‘add_output_converter‘, ‘autocommit‘, ‘clear_output_converters‘, ‘close‘, ‘commit‘, ‘cursor‘, ‘execute‘, ‘getinfo‘, ‘rollback‘, ‘searchescape‘, ‘timeout‘]

>>> dir(cur)

[‘__class__‘, ‘__delattr__‘, ‘__doc__‘, ‘__enter__‘, ‘__exit__‘, ‘__format__‘, ‘__getattribute__‘, ‘__hash__‘, ‘__init__‘, ‘__iter__‘, ‘__new__‘, ‘__reduce__‘,‘__reduce_ex__‘, ‘__repr__‘, ‘__setattr__‘, ‘__sizeof__‘, ‘__str__‘, ‘__subclasshook__‘, ‘arraysize‘, ‘close‘, ‘columns‘, ‘commit‘, ‘connection‘, ‘description‘, ‘execute‘, ‘executemany‘, ‘fetchall‘, ‘fetchmany‘, ‘fetchone‘, ‘foreignKeys‘, ‘getTypeInfo‘, ‘next‘, ‘nextset‘, ‘noscan‘, ‘primaryKeys‘, ‘procedureColumns‘, ‘procedures‘, ‘rollback‘, ‘rowIdColumns‘, ‘rowVerColumns‘, ‘rowcount‘, ‘setinputsizes‘, ‘setoutputsize‘, ‘skip‘, ‘statistics‘, ‘tables‘]

执行存储过程还是使用execute()方法,然后附加 EXEC 当作SQL命令来执行。

try:

#如果没有返回数据,存储过程执行方法

cur.execute(‘EXEC P_PROCDUREName param1,param2,%d,%s‘ %(p1_int,p2_str))

print cur.rowcount #可以得到存储过程影响的行数

#如果有返回数据集,需要添加 set nocount on, 也可在存储过程中就加入

rows = cur.execute(‘SET NOCOUNT ON; EXEC P_PROCDUREName param1,param2,%d,%s‘ %(p1_int,p2_str)).fetchall()

print cur.rowcount,rows #聪明的你已经知道,行数肯定是没有的(-1),后面的rows是一个列表,看你的数据是咋样的了。

#无论何种方式,都可以最后才commit(其实方式2已经默认包含了commit)

cur.commit()

except Exception as e:

print e

注意:如果需要得到返回数据(即存储过程里面有 Select出来的内容),就需要加上SET NOCOUNT ON;参数,否则可能会出现错误:No Results,Previous SQL was not a query

pydobc连接sql server_pyodbc连接MSSQL执行SQL语句相关推荐

  1. 如何用sqlplus执行一个sql文件和批量执行sql文件

    1.sqlplus执行单个SQL文件 举个例子,假设你的sql文件是test.sql ,保存路径是D:\script,那么在sqlplus里执行它,用如下语法: sqlplus> @D:\scr ...

  2. SQL 查询总是先执行SELECT语句吗?你们都错了!

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 译者:无明 链接:infoq.cn/article/Oke8hgi ...

  3. SQL 查询总是先执行SELECT语句吗?你们都错了!

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 来源 | infoq.cn/article/Oke8hg ...

  4. SQL 查询总是先执行SELECT语句吗?

    点击上方"朱小厮的博客",选择"设为星标" 后台回复"书",获取近百本电子书入口 译者:无明 链接:22j.co/b8Un 很多 SQL 查 ...

  5. sql server死锁_如何使用扩展事件和SQL Server代理自动执行SQL Server死锁收集过程

    sql server死锁 介绍 (Introduction) This article is the last one of a series in which we discussed how to ...

  6. sql server性能分析--执行sql次数和逻辑次数

    目前在做一个项目优化时,想通过数据库层分析sql server系统性能,查了一下网上代码,修改了一下标题和DMVs代码,以下代码可以用来分析系统运行一段时间后,那些语句是系统忙的sql语句.做为参考. ...

  7. pl/sql 执行sql文件以及批量执行sql文件

    1.单个sql文件: a>文件内容比较少得情况: a1:直接拖拽文件到pl/sql执行.            a2:文件 -> 打开 - > SQL Script选择对应得文件然后 ...

  8. SQL server 定时自动执行SQL存储过程

    当一个存储过程是为了生成报表,并且是周期性的,则不需要人工干预,由SQL作业定时自动执行些SQL存储过程即可. 本示例,假设已需要定时执行的存储过程为:Pr_test 工具/原料 SQL Server ...

  9. pydobc连接sql server_pyodbc 连接sql server

    要求:使用python访问远程服务器中的SQL Server,并且插入数据 环境:python2.7; windows XP;sql server 2000 参数(虚拟):服务器ip=1.2.3.4; ...

最新文章

  1. 根据双眼的坐标对齐人脸Python实现
  2. linux将字符串转小写_Python教程第10讲:字符串的使用
  3. shell中$*和$@ 两个都区别
  4. 获取class的名字
  5. Linux基础(使用ssh服务管理远程主机1)
  6. java 类加载器_Java 类加载器
  7. C++中宏的定义与用法(现已被内联函数所代替)
  8. input美化上传按钮美化
  9. ie中加入html代码,IE中HTML编辑器的修改与使用
  10. 基于Netty手写Tomcat
  11. html中的特殊符号表示法
  12. 简述数据可视化制作流程
  13. Linux- 什么是PID?
  14. MATLAB音乐十二平均律频谱分析与STM32电子琴(含源码)
  15. vue-element:实现微信表情
  16. 程序员找工作遇到的“了解、熟悉、精通”的三种技能要求实际上是这样的标准!
  17. unity模型制作规范
  18. 为什么很多人吐槽谭浩强的C语言程序设计?
  19. 南京大学《软件分析》课程课后作业(非Bamboo)
  20. 【deep_thoughts】30_PyTorch LSTM和LSTMP的原理及其手写复现

热门文章

  1. windows下安装 Linux Ubuntu20. 04双系统
  2. 奇瑞新能源又一款新车上市 奇瑞无界Pro炫酷来袭
  3. JavaSript正则表达式收藏
  4. win8计算机丢失xinput1+3.dll,win8提示xinput1 3.dll丢失的解决方法
  5. 为什么数字化转型必须是一把手工程?
  6. 你知道腾讯极光盒子与当贝盒子有什么区别吗?
  7. YOLOV4+DeepSort车流量检测基础版
  8. 关闭虚拟机(VMware) 主板报警声 - 出错bell嘀嘀声音
  9. signature=988b478f2af5e3a20272ed9c171b1a97,Problems of Conquering Everest
  10. mapinfo的tab图层汉字乱码_如何解决MapInfo打开文字乱码的问题