pyodbc使用

pyodbc是用于调用ODBC数据库接口而封装的python模块。
一、安装
pip install pyodbc
二、链接DB
#指定Driver链接
connection = pyodbc.connect('Driver={ODBC Driver 13 for SQL Server};Server=XXX;database=XXX;uid=XXX;pwd=XXX')
#经过DSN链接(须要先配置)
connection = pyodbc.connect('DSN=MSSQL-ABC;Server=XXX;database=XXX;uid=XXX;pwd=XXX')
三、经常使用操做
通常都是经过游标进行操做
cursor = connection.cursor()
(1)select
rows=cursor.execute("SELECT * FROM dbo.RecognisePhoto WHERE RecogStatus=0 AND Cate=2;")
注意:select必须为第一条语句,一次执行不能同时返回多个select结果集;不能使用commit()
"错误 cursor.execute('SELECT TOP 1000 VenderId,PhotoId INTO #tmpInPhoto FROM dbo.RecognisePhoto WHERE RecogStatus=0 AND Cate=2;SELECT * FROM #tmpInPhoto;')“
(2)update、insert及delete须要持久化的操做
多条能够一块儿执行
cursor.execute('UPDATE RecognisePhoto SET RecogStatus=0 WHERE RecogStatus=-1;UPDATE RecognisePhoto SET RecogStatus=-1 WHERE RecogStatus=0 AND Cate=2;')
必须提交事务不然会产生事务锁
cursor.commit()
出现异常时回滚
conn.rollback()
(3)既带select又带须要持久化操做的如update的语句,不能放在同一个执行里,可分多个execute或采用存储过程
此种类型的存储过程的执行方式必须为execute().fetchall()并commit()
rows=cursor.execute('EXEC dbo.PR_GetRecogData @cate = %d,@num = %d ;'%(2,100)).fetchall()
cursor.commit()
(4)遍历结果
经过游标捉个遍历
row = cursor.fetchone()
while row:
print (str(row[0]) + " " + str(row[1]))
row = cursor.fetchone()
返回全部行再遍历
for row in rows:
print(row)
(5)批量执行executemany
批量插入
sql = 'INSERT INTO 表名 VALUES(%s,%s,%s)' #无论什么类型,统一使用%s做为占位符
param = ((username1, salt1, pwd1), (username2, salt2, pwd2), (username3, salt3, pwd3)) #对应的param是一个tuple或者list
n=cursor.executemany(sql,param)
四、参考
pyodbc的简单使用
https://blog.csdn.net/u013013708/article/details/51086665
遭瘟的pyodbc——关于存储过程执行
https://blog.csdn.net/samed/article/details/49963531
MySQLdb使用批量插入executemany方法插入mysql
https://www.cnblogs.com/zoro-robin/p/6852409.htmlhtml

相关文章
相关标签/搜索