pyodbc 接口

pyodbc是ODBC的一个python封装,它允许任何平台上的python具有使用ODBC API的能力。那意味着,pyodbc是python语言与ODBC的一条桥梁。

pyodbc的基本类型是Connection,Cursor和Row,其中,Connection表示客户端和数据库的连接,并用于提交事务;Cursor表示向数据库发送的查询请求,Row表示获取的结果集。

具体用法详见技术手册

pyodbc 的运行机制,见下图。

img

安装插件

pip install pyodbc 

image-20220506120058740

示例代码

pyodbc_conn.py

# -*-coding:utf-8-*-
import pyodbc
import datetime

#在Python中,str表示字符串类型。一般用单引号、双引号和三引号来表示字符串,表示字符串的单引号和双引号应该成对出现。
#print(pyodbc.drivers())

try:
#方式一:使用自定义的DSN
conn = pyodbc.connect('DSN=HighGoOdbc;PWD=test')
# 方式二:使用驱动
# conn = pyodbc.connect('DRIVER={PostgreSQL Unicode(x64)};SERVER=192.168.2.5;port=5866;DATABASE=test;UID=test;PWD=test')
cursor = conn.cursor()
#cursor.execute("select '数据库版本:['||version()||']'")
#result = cursor.fetchall()
#print(result)

#查询数据
cursor.execute("select count(*) as student_count from student")
row = cursor.fetchone()
print("目前已有: " + str(row.student_count) + "条数据")

#新增
cursor.execute("insert into student(name, age, birthday) values (?, ?, ?)", ("pyodbc", 24, datetime.datetime.now()))
cursor.execute("insert into student(name, age, birthday) values (?, ?, ?)","pyodbc2", 24, datetime.datetime.now())
params = [('pyodbc3', 18, '2019-07-06 15:59:58'), ('pyodbc4', 20, '2019-07-06 15:59:58')]
cursor.executemany("insert into student(name,age,birthday) values (?, ?, ?)", params)

#等价于等价于执行execute()函数两次

#for p in params:
# cursor.execute("insert into student(name,age,birthday) values (?, ?, ?)", p)
# 提交数据(只有提交之后,所有的操作才会对实际的物理表格产生影响)
conn.commit()

#查询数据
cursor.execute("select * from student")
rows = cursor.fetchall()
print("查询到:" + str(rows.__len__()) + "条数据")
for row in rows:
print(row.id, row.name)

#执行存储过程
params = ("Dinsdale", 14)
cursor.execute("{CALL t_return_val (?,?)}", params)
result = cursor.fetchone()
print(result)

#关闭Cursor对象
cursor.close()
#关闭连接
conn.close()

except Exception as e:
print(e)

执行结果:

image-20220506143402954

image-20220506143419411

注意:保持.py文件不要有同名存在

image-20220506131529148