python使用pyodbc连接sqlserver
作者:罗汉松驻扎的工作基地 发布时间:2021-12-24 06:06:17
用python操作ms sqlserver,有好几种方法:
(1)利用pymssql (2)利用pyodbc
这里讲import pyodbc来操作sql server database。
pyodbc是Python包,使用ODBC驱动器来连接SQL Server数据库,其中pyodbc的基本类型是Connection,Cursor、Row
其中,Connection表示客户端和数据库的连接,并用于提交事务;
Cursor表示向数据库发送的查询请求;
Row表示获取的结果集。
首先查看自己电脑有没有安装sql server对应的odbc,在控制面板中可以查:
控制面板-->管理工具-->数据源(ODBC)
我电脑的版本是 ODBC Driver 11 for SQL Server
不同电脑安装了不同的sql server版本,可能driver不同,有可能是12、13、19等等版本。
然后利用powershell下载安装pyodbc包,如图输入
pip install pyodbc
下载成功之后,输入看看有没有成功安装package
pip list
成功安装package之后,就可以开始编辑python代码了。
代码如下(两个文件DBHelp_SqlServer.py 和 testConn.py):
文件1(DBHelp_SqlServer.py)
import pyodbc
class MSSQL:
def __init__(self, IP, UserID, Pwd, db):
self.host=IP;
self.user=UserID;
self.password=Pwd;
self.dbname=db;
def __getConnect(self):
if not self.dbname:
raise(NameError,"db name undefine error")
else:
connSTR="Driver={ODBC Driver 11 for SQL Server};SERVER=%s,1433;DATABASE=%s;UID=%s;PWD=%s" % (self.host, self.dbname, self.user, self.password)
##example: Driver={ODBC Driver 11 for SQL Server};SERVER=127.0.0.1,1433;DATABASE=MyTestDB;UID=sa;PWD=Abc123
self.conn = pyodbc.connect(connSTR);
cu= self.conn.cursor();
if not cu:
raise(NameError,"db connect error");
else:
return cu;
def ExecuteTableQuery(self,selectSql):
cuu = self.__getConnect();
selectRows = cuu.execute(selectSql);
resList=selectRows.fetchall();
self.conn.close();
return resList;
def ExecuteNonQuery(self,sql):
cuu = self.__getConnect();
cuu.execute(sql);
self.conn.commit();
self.conn.close();
def PrintODBCDrivers(self):
print(pyodbc.drivers() );
文件2(testConn.py)
import DBHelp_SqlServer
db=DBHelp_SqlServer.MSSQL(IP="127.0.0.1", UserID="sa", Pwd="Abc123", db="MyTestDB");
sqlinsert="insert into TeacherTable(TName,TClass) values('吕老师','三年级')"
db.ExecuteNonQuery(sql=sqlinsert);
sql1="select * from TeacherTable";
datatable = db.ExecuteTableQuery(selectSql=sql1);
print(datatable);
运行之后就能看到insert sql和select sql的结果了。
备注:如果使用pymssql,可能会出现中文乱码的问题,我搞不懂怎么解决。而使用pyodbc就没出现乱码。哪个简单用哪个。
来源:https://blog.csdn.net/MFCdestoryer/article/details/128903053


猜你喜欢
- Python数据类型分为值类型和引用类型, 下面我们看下它们的区别:值类型:对象本身不允许修改,数值的修改实际上是让变量指向了一个新的对象包
- 你可以输入'脚本'查查看 查找页面中的字符 <script language="JavaScript&quo
- 如果你只使用一个更新日志,你只须清空日志文件,然后移走旧的更新日志文件到一个备份中,然后启用新的更新日志。用下列方法可以强制服务器启用新的更
- 导语:Python如何下载网页上的图片呢?今天小编给大家分享另一个Python应用小程序,就是:用Python控制摄像头录制视频!学会了也可
- 一、创建和管理表 1、创建表语法 create table 表名(column datatype [default expr][,colum
- 本文为大家分享了Mysql WorkBench安装配置图文教程,供大家参考,具体内容如下workbench下载地址下载到workbench下
- 如果不小心按到键盘上的Insert键的话,光标显示的就不是一条竖线,而是一个类似方块的阴影区域,比如插入一下insert键的介绍:它叫插入键
- 一、什么是"非构造函数"的继承?比如,现在有一个对象,叫做"中国人"。var Chinese = {
- 前言Tkinter是python内置的标准GUI库,基于Tkinter实现了简易人员管理系统,所用数据库为Mongodb代码时间宝贵!直接上
- 1.先用 for 循环取for item in l: if isinstance(item ,list): &nb
- 如下图所示:单击Edit Code打开Code信息如下:经查Data at the root level is invalid是XML文件的
- 支付宝或者微信支付导出的收款二维码,除了二维码部分,还有很大一块背景图案,例如下面就是微信支付的收款二维码:有时候我们仅仅只想要图片中间的方
- python多进程下实现日志记录按时间分割,供大家参考,具体内容如下原理:自定义日志handler继承TimedRotatingFileHa
- 整体分为两步:第一步:查看系统保存的连接的ini文件(大概位置:F:\SecureCRTSecureFX_HH_x64_7.0.0.326\
- 回想下,在 Python 中编程时,你是否曾经需要检查某个可迭代对象(如列表)中的任何元素或所有元素的计算结果是否为True?假设,我们要判
- 本文介绍了Python3网络爬虫之使用User Agent和 * 隐藏身份,分享给大家,具体如下:运行平台:WindowsPython版本
- 1. 使用os.system("cmd")特点是执行的时候程序会打出cmd在Linux上执行的信息。import oso
- 本文实例讲述了python开启多个子进程并行运行的方法。分享给大家供大家参考。具体如下:这个python代码创建了多个process子进程,
- 前言其实有一个模块也支持执行系统命令,那个模块就是sys.system,但他执行系统命令会直接通过主进程去执行命令,那假如,该命令的执行需要
- 1:数据源Hollywood Movie Dataset: 好莱坞2006-2011数据集实验目的: 实现 统计2006-2011的数据综合