笺注:这是在 使用Navicat远程管理MSSQL2014 的基础上进行的。
创建了一个库data1:
创建了一个数据库用户zhuohua,对库data1有完全控制的权限:
############
Win7客户端连接公网安装第三方库(pyodbc):(可以指定软件的版本)
pip3 install pyodbc==4.0.30 -i http://mirrors.aliyun.com/pypi/simple --trusted-host=mirrors.aliyun.com
备注:32位系统会自动安装32位的软件包;64位系统会自动安装64位的软件包。
由此还可以获得软件包的下载地址:(需要另外手动下载软件包)
Downloading http://mirrors.aliyun.com/pypi/packages/1a/71/3782413f9cb7088017b6b842ff59a1329f84da2108f0081fd27d1be6a5f6/pyodbc-4.0.30-cp36-cp36m-win32.whl (68kB)
注释:这是32位软件包。
笺注:假如只是在远程客户端通过Python3脚本管理MSSQL数据库,那么MSSQL服务器连Python3都不需要安装。
######
例子一:
Win7客户端远程测试与数据库的连接的脚本:(C:\Users\jacky\Desktop\xx.py)
#coding=utf-8
import pyodbc
def db_connect():
db = pyodbc.connect(DRIVER='{SQL Server}',SERVER='192.168.168.133',PORT='1433',DATABASE='master',UID='sa',PWD='Jacky888') #连接数据库;MSSQL服务器的IP地址(192.168.168.133)、端口号(1433)、其中一个库的名称(master)、用户名(sa)、用户密码
cursor = db.cursor()
Sql_1 = "select @@VERSION as sql_server_v" #查询MSSQL的版本信息
cursor.execute(Sql_1) #执行SQL语句
Result_1 = cursor.fetchone() #使用fetchone只能获取一个元素
print(Result_1)
print(type(Result_1))
print("-" * 10)
print("数据库连接成功,数据库的版本信息:")
print(Result_1[0]) #输出结果的第一项
print("-" * 10)
Result_2 = Result_1[0][0:25] #输出结果的第一项前面25个字符
print(Result_2)
db.commit() #把执行任务提交到数据库
db.close()
def func_main():
try:
db_connect()
except Exception as e:
print(f"数据库连接失败,原因: {e}")
if __name__ == "__main__":
func_main()
脚本运行的结果:
C:\Users\jacky\Desktop>python xx.py
('Microsoft SQL Server 2014 - 12.0.2000.8 (X64) \n\tFeb 20 2014 20:04:26 \n\tCopyright (c) Microsoft Corporation\n\tEnterprise Edition (64-bit) on Windows NT 6.3 <X64> (Build 9600: ) (Hypervisor)\n', )
<class 'pyodbc.Row'>
----------
数据库连接成功,数据库的版本信息:
Microsoft SQL Server 2014 - 12.0.2000.8 (X64)
Feb 20 2014 20:04:26
Copyright (c) Microsoft Corporation
Enterprise Edition (64-bit) on Windows NT 6.3 <X64> (Build 9600: ) (Hypervisor)
----------
Microsoft SQL Server 2014
C:\Users\jacky\Desktop>
######
例子二:
Win7客户端远程测试与数据库的连接的脚本:
#coding=utf-8
import pyodbc
def db_connect():
db = pyodbc.connect(DRIVER='{SQL Server}',SERVER='192.168.168.133',PORT='1433',DATABASE='data1',UID='zhuohua',PWD='123') #连接数据库;MSSQL服务器的IP地址(192.168.168.133)、端口号(1433)、其中一个库的名称(data1)、用户名(zhuohua)、用户密码
cursor = db.cursor()
Sql_1 = "select @@VERSION as sql_server_v;" #查询MSSQL的版本信息
cursor.execute(Sql_1) #执行SQL语句
print("数据库连接成功,数据库的版本信息:")
Result_1 = cursor.fetchone()
Result_2 = Result_1[0][0:25] #输出结果的第一项前面25个字符
print(Result_2)
db.commit() #把执行任务提交到数据库
db.close()
def func_main():
try:
db_connect()
except Exception as e:
print(f"数据库连接失败,原因: {e}")
if __name__ == "__main__":
func_main()
脚本运行的结果:
C:\Users\jacky\Desktop>python xx.py
数据库连接成功,数据库的版本信息:
Microsoft SQL Server 2014
C:\Users\jacky\Desktop>
######
例子三:
Win7客户端远程创建表的脚本:
#coding=utf-8
import pyodbc
def create_table():
db = pyodbc.connect(DRIVER='{SQL Server}',SERVER='192.168.168.133',PORT='1433',DATABASE='data1',UID='zhuohua',PWD='123')
cursor = db.cursor()
Sql_1 = "create table t_1 (id int primary key not null identity (1,1),name nvarchar(50),math float,date datetime,time datetime)" #这是在库data1中创建表t_1;字段id为主键、标识符列,会自动增长。
cursor.execute(Sql_1)
db.commit() #把执行任务提交到数据库
db.close()
def func_main():
try:
create_table()
except Exception as e:
print(f"创建表失败,原因: {e}")
else:
print("创建表成功。")
if __name__ == "__main__":
func_main()
脚本运行的结果:
C:\Users\jacky\Desktop>python xx.py
创建表成功。
C:\Users\jacky\Desktop>
使用Navicat查看库data1的表t_1的表结构:
######
例子四:
Win7客户端远程插入一条记录的脚本:
#coding=utf-8
import pyodbc
def insert_record():
global db
db = pyodbc.connect(DRIVER='{SQL Server}',SERVER='192.168.168.133',PORT='1433',DATABASE='data1',UID='zhuohua',PWD='123')
cursor = db.cursor()
Sql_1 = "INSERT INTO t_1(name,math,date,time)" \
" VALUES('李大杰',18,'2019-9-9','2019-9-9 7:9:18')" #这是往库data1的表t_1中插入记录
cursor.execute(Sql_1)
db.commit() #把执行任务提交到数据库
db.close()
def func_main():
try:
insert_record()
except Exception as e:
print(f"插入记录失败,原因: {e}")
db.rollback() #如果发生错误就回滚
else:
print("插入记录成功。")
if __name__ == "__main__":
func_main()
脚本运行的结果:
C:\Users\jacky\Desktop>python xx.py
插入记录成功。
C:\Users\jacky\Desktop>
使用Navicat查看库data1的表t_1的表数据:
use data1;
select * from t_1;
######
例子五:
Win7客户端远程一次性插入多条记录的脚本:
#coding=utf-8
import pyodbc
import datetime
dt = datetime.datetime.now()
tt_1 = dt.strftime('%Y-%m-%d') #当前日期
tt_2 = dt.strftime('%Y-%m-%d %H:%M:%S') #当前时间
def insert_record():
global db
db = pyodbc.connect(DRIVER='{SQL Server}',SERVER='192.168.168.133',PORT='1433',DATABASE='data1',UID='zhuohua',PWD='123')
cursor = db.cursor()
Key_1 = '范小冰'
Key_2 = 28
Key_3 = '2019-10-08'
Key_4 = '2019-10-08 05:06:08'
Sql_2 = f"INSERT INTO t_1(name,math,date,time) VALUES('{Key_1}',{Key_2},'{Key_3}','{Key_4}')"
cursor.execute(Sql_2)
Key_1 = 'zhuohua'
Key_2 = 38.5
Key_3 = tt_1
Key_4 = tt_2
Sql_3 = f"INSERT INTO t_1(name,math,date,time) VALUES('{Key_1}',{Key_2},'{Key_3}','{Key_4}')"
cursor.execute(Sql_3)
db.commit() #把执行任务提交到数据库;必须是所有SQL语句都执行成功才会提交
db.close()
def func_main():
try:
insert_record()
except Exception as e:
print(f"插入记录失败,原因: {e}")
db.rollback() #如果发生错误就回滚
else:
print("插入记录成功。")
if __name__ == "__main__":
func_main()
脚本运行的结果:
C:\Users\jacky\Desktop>python xx.py
插入记录成功。
C:\Users\jacky\Desktop>
使用Navicat查看库data1的表t_1的表数据:
######
例子六:
Win7客户端远程输出库data1中表t_1的所有记录的脚本:
#coding=utf-8
import pyodbc
def query_data():
db = pyodbc.connect(DRIVER='{SQL Server}',SERVER='192.168.168.133',PORT='1433',DATABASE='data1',UID='zhuohua',PWD='123')
cursor = db.cursor()
Sql_1 = "select * from t_1"
cursor.execute(Sql_1)
Result_1 = cursor.fetchall() #使用fetchall可以获取多个元素
print(Result_1)
print(type(Result_1))
print("-" * 10)
for Key_1 in Result_1: #自定义输出格式
id = Key_1[0]
name = Key_1[1]
math = Key_1[2]
date = Key_1[3]
time = Key_1[4]
print(f"id={id},姓名={name},数学成绩={math},日期={date},时间={time}")
db.commit() #把执行任务提交到数据库
db.close()
def func_main():
try:
query_data()
except Exception as e:
print(f"输出失败,原因: {e}")
if __name__ == "__main__":
func_main()
脚本运行的结果:
C:\Users\jacky\Desktop>python xx.py
[(1, '李大杰', 18.0, datetime.datetime(2019, 9, 9, 0, 0), datetime.datetime(2019, 9, 9, 7, 9, 18)), (2, '范小冰', 28.0, datetime.datetime(2019, 10, 8, 0, 0), datetime.datetime(2019, 10, 8, 5, 6, 8)), (3, 'zhuohua', 38.5, datetime.datetime(2020, 4, 2, 0, 0), datetime.datetime(2020, 4, 2, 9, 44, 21))]
<class 'list'>
----------
id=1,姓名=李大杰,数学成绩=18.0,日期=2019-09-09 00:00:00,时间=2019-09-09 07:09:18
id=2,姓名=范小冰,数学成绩=28.0,日期=2019-10-08 00:00:00,时间=2019-10-08 05:06:08
id=3,姓名=zhuohua,数学成绩=38.5,日期=2020-04-02 00:00:00,时间=2020-04-02 09:44:21
C:\Users\jacky\Desktop>
######
例子七:
Win7客户端把输出结果写入(覆盖)到本地文件的脚本:
#coding=utf-8
import pyodbc
def query_data():
db = pyodbc.connect(DRIVER='{SQL Server}',SERVER='192.168.168.133',PORT='1433',DATABASE='data1',UID='zhuohua',PWD='123')
cursor = db.cursor()
Sql_1 = "select * from t_1"
cursor.execute(Sql_1)
Result_1 = cursor.fetchall()
for Key_1 in Result_1: #自定义输出格式
id = Key_1[0]
name = Key_1[1]
math = Key_1[2]
date = Key_1[3]
time = Key_1[4]
print(f"id={id},姓名={name},数学成绩={math},日期={date},时间={time}")
db.commit() #把执行任务提交到数据库
db.close()
def func_main():
try:
query_data()
except Exception as e:
print(f"输出失败,原因: {e}")
if __name__ == "__main__":
func_main()
脚本运行的结果:
C:\Users\jacky\Desktop>python xx.py > 1.txt
C:\Users\jacky\Desktop>
文件1.txt的内容:
id=1,姓名=李大杰,数学成绩=18.0,日期=2019-09-09 00:00:00,时间=2019-09-09 07:09:18
id=2,姓名=范小冰,数学成绩=28.0,日期=2019-10-08 00:00:00,时间=2019-10-08 05:06:08
id=3,姓名=zhuohua,数学成绩=38.5,日期=2020-04-02 00:00:00,时间=2020-04-02 09:44:21
######
例子八:
Win7客户端远程清空库data1中表t_1的所有记录的脚本:
#coding=utf-8
import pyodbc
def truncate_table():
db = pyodbc.connect(DRIVER='{SQL Server}',SERVER='192.168.168.133',PORT='1433',DATABASE='data1',UID='zhuohua',PWD='123')
cursor = db.cursor()
Sql_1 = "truncate table t_1" #清空后,字段“id”会从1重新开始
cursor.execute(Sql_1)
db.commit() #把执行任务提交到数据库
db.close()
print ("清空表成功。")
def func_main():
try:
truncate_table()
except Exception as e:
print(f"清空表失败,原因: {e}")
if __name__ == "__main__":
func_main()
脚本运行的结果:
C:\Users\jacky\Desktop>python xx.py
清空表成功。
C:\Users\jacky\Desktop>
使用Navicat查看库data1的表t_1的表数据:
######
例子九:
Win7客户端把本地文件里的所有记录添加到数据库中的某个表的脚本:
#coding=utf-8
import pyodbc
def func1():
Path_1 = "./1.txt"
f_name = open(Path_1,'r')
Result_1 = f_name.readlines() #输出结果为列表,包含换行符
f_name.close()
print(Result_1)
print(type(Result_1))
insert_record(Result_1)
def insert_record(Result_1):
db = pyodbc.connect(DRIVER='{SQL Server}',SERVER='192.168.168.133',PORT='1433',DATABASE='data1',UID='zhuohua',PWD='123')
cursor = db.cursor()
for Key_1 in Result_1:
#字段id为主键、标识符列,会自动增长,不用写
name = Key_1.split(',')[1][3:] #去掉前面3个字符
math = float(Key_1.split(',')[2][5:]) #去掉前面5个字符,再转换为浮点数
date = Key_1.split(',')[3][3:] #去掉前面3个字符
time = Key_1.split(',')[4][3:].rstrip('\n') #去掉前面3个字符,再去除右边的换行符
Sql_1 = f"INSERT INTO t_1(name,math,date,time) VALUES('{name}',{math},'{date}','{time}')"
cursor.execute(Sql_1)
db.commit() #把执行任务提交到数据库
db.close()
if __name__ == "__main__":
func1()
脚本运行的结果:
C:\Users\jacky\Desktop>python xx.py
['id=1,姓名=李大杰,数学成绩=18.0,日期=2019-09-09 00:00:00,时间=2019-09-09 07:09:18\n', 'id=2,姓名=范小冰,数学成绩=28.0,日期=2019-10-08 00:00:00,时间=2019-10-08 05:06:08\n', 'id=3,姓名=zhuohua,数学成绩=38.5,日期=2020-04-02 00:00:00,时间=2020-04-02 09:44:21\n']
<class 'list'>
C:\Users\jacky\Desktop>
使用Navicat查看库data1的表t_1的表数据:
######
例子十:
Win7客户端远程输出数据库中某个表里某条记录的脚本:
#coding=utf-8
import pyodbc
def query_data():
db = pyodbc.connect(DRIVER='{SQL Server}',SERVER='192.168.168.133',PORT='1433',DATABASE='data1',UID='zhuohua',PWD='123')
cursor = db.cursor()
Sql_1 = "select * from t_1"
cursor.execute(Sql_1)
Result_1 = cursor.fetchall()
print(Result_1)
print(type(Result_1))
print("-" * 10)
print(Result_1[0]) #列表的第一个元素,即第一条记录
print(Result_1[0][1])
print(type(Result_1[0][1]))
print(Result_1[0][2])
print(type(Result_1[0][2]))
db.commit() #把执行任务提交到数据库
db.close()
def func_main():
try:
query_data()
except Exception as e:
print(f"输出失败,原因: {e}")
if __name__ == "__main__":
func_main()
脚本运行的结果:
C:\Users\jacky\Desktop>python xx.py
[(1, '李大杰', 18.0, datetime.datetime(2019, 9, 9, 0, 0), datetime.datetime(2019, 9, 9, 7, 9, 18)), (2, '范小冰', 28.0, datetime.datetime(2019, 10, 8, 0, 0), datetime.datetime(2019, 10, 8, 5, 6, 8)), (3, 'zhuohua', 38.5, datetime.datetime(2020, 4, 2, 0, 0), datetime.datetime(2020, 4, 2, 9, 44, 21))]
<class 'list'>
----------
(1, '李大杰', 18.0, datetime.datetime(2019, 9, 9, 0, 0), datetime.datetime(2019, 9, 9, 7, 9, 18))
李大杰
<class 'str'>
18.0
<class 'float'>
C:\Users\jacky\Desktop>
######
例子十一:
Win7客户端远程输出数据库中某个表里符合指定条件的记录的脚本:
#coding=utf-8
import pyodbc
def query_data():
db = pyodbc.connect(DRIVER='{SQL Server}',SERVER='192.168.168.133',PORT='1433',DATABASE='data1',UID='zhuohua',PWD='123')
cursor = db.cursor()
Sql_1 = "select * from t_1 where math <= 30"
cursor.execute(Sql_1)
Result_1 = cursor.fetchall()
print(Result_1)
print(type(Result_1))
print("-" * 10)
for Key_1 in Result_1: #自定义输出格式
id = Key_1[0]
name = Key_1[1]
math = Key_1[2]
date = str(Key_1[3])[0:10] #输出前面10个字符
time = str(Key_1[4])[-8:] #输出最后8个字符
print(f"id={id},姓名={name},数学成绩={math},日期={date},时间={time}")
print("-" * 10)
print(Result_1[1]) #列表的第二个元素,即第二条记录
print(Result_1[1][0])
print(type(Result_1[1][0]))
print(Result_1[1][3])
print(type(Result_1[1][3]))
print(Result_1[1][4])
print(type(Result_1[1][4]))
db.commit() #把执行任务提交到数据库
db.close()
def func_main():
try:
query_data()
except Exception as e:
print(f"输出失败,原因: {e}")
if __name__ == "__main__":
func_main()
脚本运行的结果:
C:\Users\jacky\Desktop>python xx.py
[(1, '李大杰', 18.0, datetime.datetime(2019, 9, 9, 0, 0), datetime.datetime(2019, 9, 9, 7, 9, 18)), (2, '范小冰', 28.0, datetime.datetime(2019, 10, 8, 0, 0), datetime.datetime(2019, 10, 8, 5, 6, 8))]
<class 'list'>
----------
id=1,姓名=李大杰,数学成绩=18.0,日期=2019-09-09,时间=07:09:18
id=2,姓名=范小冰,数学成绩=28.0,日期=2019-10-08,时间=05:06:08
----------
(2, '范小冰', 28.0, datetime.datetime(2019, 10, 8, 0, 0), datetime.datetime(2019, 10, 8, 5, 6, 8))
2
<class 'int'>
2019-10-08 00:00:00
<class 'datetime.datetime'>
2019-10-08 05:06:08
<class 'datetime.datetime'>
C:\Users\jacky\Desktop>
######
例子十二:
Win7客户端远程输出根据关键字搜索出来的记录的脚本:
#coding=utf-8
import pyodbc
def query_data():
db = pyodbc.connect(DRIVER='{SQL Server}',SERVER='192.168.168.133',PORT='1433',DATABASE='data1',UID='zhuohua',PWD='123')
cursor = db.cursor()
Sql_1 = "select * from t_1 where name = 'Zhuohua'" #关键字不区分英文字母大小写
cursor.execute(Sql_1)
Result_1 = cursor.fetchall()
print(Result_1)
print(type(Result_1))
print("-" * 10)
for Key_1 in Result_1:
id = Key_1[0]
name = Key_1[1]
math = Key_1[2]
date = str(Key_1[3])[0:10] #输出前面10个字符
time = str(Key_1[4])[-8:] #输出最后8个字符
print(f"id={id},姓名={name},数学成绩={math},日期={date},时间={time}")
print("-" * 10)
print(date)
print(type(date))
print(time)
print(type(time))
db.commit() #把执行任务提交到数据库
db.close()
def func_main():
try:
query_data()
except Exception as e:
print(f"输出失败,原因: {e}")
if __name__ == "__main__":
func_main()
脚本运行的结果:
C:\Users\jacky\Desktop>python xx.py
[(3, 'zhuohua', 38.5, datetime.datetime(2020, 4, 2, 0, 0), datetime.datetime(2020, 4, 2, 9, 44, 21))]
<class 'list'>
----------
id=3,姓名=zhuohua,数学成绩=38.5,日期=2020-04-02,时间=09:44:21
----------
2020-04-02
<class 'str'>
09:44:21
<class 'str'>
C:\Users\jacky\Desktop>
######
例子十三:
Win7客户端远程输出根据聚合函数获得的数据的脚本:(结果只取一个值)
#coding=utf-8
import pyodbc
def query_data():
db = pyodbc.connect(DRIVER='{SQL Server}',SERVER='192.168.168.133',PORT='1433',DATABASE='data1',UID='zhuohua',PWD='123')
cursor = db.cursor()
Sql_1 = "select max(math) from t_1" #查询字段math中的最大值
cursor.execute(Sql_1)
Result_1 = cursor.fetchone()
print(Result_1)
print(type(Result_1))
print("-" * 10)
print(Result_1[0])
print(type(Result_1[0]))
db.commit() #把执行任务提交到数据库
db.close()
def func_main():
try:
query_data()
except Exception as e:
print(f"输出失败,原因: {e}")
if __name__ == "__main__":
func_main()
脚本运行的结果:
C:\Users\jacky\Desktop>python xx.py
(38.5, )
<class 'pyodbc.Row'>
----------
38.5
<class 'float'>
C:\Users\jacky\Desktop>
######
例子十四:
Win7客户端远程更改记录的脚本:
#coding=utf-8
import pyodbc
def update_record():
global db
db = pyodbc.connect(DRIVER='{SQL Server}',SERVER='192.168.168.133',PORT='1433',DATABASE='data1',UID='zhuohua',PWD='123')
cursor = db.cursor()
Sql_1 = "UPDATE t_1 SET math = 66.5 WHERE name = 'zhuoHUA'" #关键字不区分英文字母大小写
cursor.execute(Sql_1)
Sql_2 = "UPDATE t_1 SET math = 88 WHERE name like '__杰%'"
cursor.execute(Sql_2)
db.commit() #把执行任务提交到数据库;必须是所有SQL语句都执行成功才会提交
db.close()
def func_main():
try:
update_record()
except Exception as e:
print(f"更改记录失败,原因: {e}")
db.rollback() #如果发生错误就回滚
else:
print("更改记录成功。")
if __name__ == "__main__":
func_main()
脚本运行的结果:
C:\Users\jacky\Desktop>python xx.py
更改记录成功。
C:\Users\jacky\Desktop>
使用Navicat查看库data1的表t_1的表数据:
备注:假如没有找到匹配的记录进行更改,会直接跳过,不会报错的。
######
例子十五:
Win7客户端远程更改记录的脚本:
#coding=utf-8
import pyodbc
def update_record():
global db
db = pyodbc.connect(DRIVER='{SQL Server}',SERVER='192.168.168.133',PORT='1433',DATABASE='data1',UID='zhuohua',PWD='123')
cursor = db.cursor()
Sql_1 = "UPDATE t_1 SET date = '2019-10-10' WHERE name = '李大杰'" #直接更改日期
cursor.execute(Sql_1)
Sql_2 = "UPDATE t_1 SET date = dateadd(YYYY,2,date) WHERE name like '范%'" #字段date加大2年
cursor.execute(Sql_2)
Sql_3 = "UPDATE t_1 SET time = dateadd(HH,-3,time) WHERE name like 'zhuo%'" #字段time减小3小时
cursor.execute(Sql_3)
db.commit() #把执行任务提交到数据库;必须是所有SQL语句都执行成功才会提交
db.close()
def func_main():
try:
update_record()
except Exception as e:
print(f"更改记录失败,原因: {e}")
db.rollback() #如果发生错误就回滚
else:
print("更改记录成功。")
if __name__ == "__main__":
func_main()
脚本运行的结果:
C:\Users\jacky\Desktop>python xx.py
更改记录成功。
C:\Users\jacky\Desktop>
使用Navicat查看库data1的表t_1的表数据:
######
例子十六:
Win7客户端远程删除记录的脚本:
#coding=utf-8
import pyodbc
def delete_record():
global db
db = pyodbc.connect(DRIVER='{SQL Server}',SERVER='192.168.168.133',PORT='1433',DATABASE='data1',UID='zhuohua',PWD='123')
cursor = db.cursor()
Sql_1 = "DELETE FROM t_1 WHERE name like '%Zhuo%'" #关键字不区分英文字母大小写
cursor.execute(Sql_1)
Sql_2 = "DELETE FROM t_1 WHERE name = '李大杰'"
cursor.execute(Sql_2)
db.commit() #把执行任务提交到数据库;必须是所有SQL语句都执行成功才会提交
db.close()
def func_main():
try:
delete_record()
except Exception as e:
print(f"删除记录失败,原因: {e}")
db.rollback() #如果发生错误就回滚
else:
print("删除记录成功。")
if __name__ == "__main__":
func_main()
脚本运行的结果:
C:\Users\jacky\Desktop>python xx.py
删除记录成功。
C:\Users\jacky\Desktop>
使用Navicat查看库data1的表t_1的表数据:
备注:假如没有找到匹配的记录进行删除,会直接跳过,不会报错的。
######
Win7客户端卸载安装好的第三方库(pyodbc):
C:\Users\jacky\Desktop>pip3 uninstall pyodbc -y
Uninstalling pyodbc-4.0.30:
Successfully uninstalled pyodbc-4.0.30
C:\Users\jacky\Desktop>
Win7客户端离线安装第三方库(pyodbc):(需要先手动下载软件包)
C:\Users\jacky\Desktop>pip3 install pyodbc-4.0.30-cp36-cp36m-win32.whl
Processing c:\users\jacky\desktop\pyodbc-4.0.30-cp36-cp36m-win32.whl
Installing collected packages: pyodbc
Successfully installed pyodbc-4.0.30
C:\Users\jacky\Desktop>
############
MSSQL服务器连接公网安装第三方库(pyodbc):
pip3 install pyodbc==4.0.30 -i http://mirrors.aliyun.com/pypi/simple --trusted-host=mirrors.aliyun.com
备注:32位系统会自动安装32位的软件包;64位系统会自动安装64位的软件包。
由此还可以获得软件包的下载地址:(需要另外手动下载软件包)
Downloading http://mirrors.aliyun.com/pypi/packages/83/ad/b8b109c6ce0c5cd306218337fcd8226bff24e803f17aea339d1fe1e0070b/pyodbc-4.0.30-cp36-cp36m-win_amd64.whl (78kB)
注释:这是64位软件包。
######
例子十七:
服务器本地测试与数据库的连接的脚本:(D:\yy.py)
#coding=utf-8
import pyodbc
def db_connect():
db = pyodbc.connect(DRIVER='{SQL Server}',SERVER='127.0.0.1',PORT='1433',DATABASE='data1',UID='sa',PWD='Jacky888') #连接数据库;MSSQL服务器的本地回环地址(127.0.0.1)
cursor = db.cursor()
Sql_1 = "select @@VERSION as sql_server_v;" #查询MSSQL的版本信息
cursor.execute(Sql_1)
Result_1 = cursor.fetchone()
print("数据库连接成功,数据库的版本信息:")
Result_2 = Result_1[0][0:25] #输出结果的第一项前面25个字符
print(Result_2)
db.commit() #把执行任务提交到数据库
db.close()
def func_main():
try:
db_connect()
except Exception as e:
print(f"数据库连接失败,原因: {e}")
if __name__ == "__main__":
func_main()
脚本运行的结果:
C:\Users\Administrator>python d:/yy.py
数据库连接成功,数据库的版本信息:
Microsoft SQL Server 2014
C:\Users\Administrator>
######
例子十八:
服务器本地查询MSSQL的最大用户连接数的脚本:(结果只取一个值)
#coding=utf-8
import pyodbc
def query_data():
db = pyodbc.connect(DRIVER='{SQL Server}',SERVER='127.0.0.1',PORT='1433',DATABASE='data1',UID='zhuohua',PWD='123')
cursor = db.cursor()
Sql_1 = "select @@MAX_CONNECTIONS as 最大用户连接数;" #查询MSSQL的最大用户连接数
cursor.execute(Sql_1)
Result_1 = cursor.fetchone()
print(Result_1)
print(type(Result_1))
print("-" * 10)
print(Result_1[0])
print(type(Result_1[0]))
db.commit() #把执行任务提交到数据库
db.close()
def func_main():
try:
query_data()
except Exception as e:
print(f"输出失败,原因: {e}")
if __name__ == "__main__":
func_main()
脚本运行的结果:
C:\Users\Administrator>python d:/yy.py
(32767, )
<class 'pyodbc.Row'>
----------
32767
<class 'int'>
C:\Users\Administrator>
######
例子十九:
服务器本地删除数据库中某个表的脚本:
#coding=utf-8
import pyodbc
def drop_table():
db = pyodbc.connect(DRIVER='{SQL Server}',SERVER='127.0.0.1',PORT='1433',DATABASE='data1',UID='zhuohua',PWD='123')
cursor = db.cursor()
Sql_1 = "DROP TABLE t_1" #删除库data1的表t_1
cursor.execute(Sql_1)
db.commit() #把执行任务提交到数据库
db.close()
def func_main():
try:
drop_table()
except Exception as e:
print(f"删除表失败,原因: {e}")
else:
print ("删除表成功。")
if __name__ == "__main__":
func_main()
脚本运行的结果:(假如表存在时)
C:\Users\Administrator>python d:/yy.py
删除表成功。
C:\Users\Administrator>
脚本运行的结果:(假如表不存在时)
C:\Users\Administrator>python d:/yy.py
删除表失败,原因: ('42S02', "[42S02] [Microsoft][ODBC SQL Server Driver][SQL Server]无法对 表 't_1' 执行 删除,因为它不存在,或者您没有所需的权限。 (3701) (SQLExecDirectW)")
C:\Users\Administrator>
使用Navicat查看库data1的表t_1的表数据:
注释:库data1的表t_1已经被删除。
######
MSSQL服务器卸载安装好的第三方库(pyodbc):
C:\Users\Administrator>pip3 uninstall pyodbc -y
Uninstalling pyodbc-4.0.30:
Successfully uninstalled pyodbc-4.0.30
C:\Users\Administrator>
MSSQL服务器离线安装第三方库(pyodbc):(需要先手动下载软件包)
C:\Users\Administrator>pip3 install d:/pyodbc-4.0.30-cp36-cp36m-win_amd64.whl
Processing d:\pyodbc-4.0.30-cp36-cp36m-win_amd64.whl
Installing collected packages: pyodbc
Successfully installed pyodbc-4.0.30
C:\Users\Administrator>
相关文章:
Windows2012R2安装MSSQL2014
Windows2012R2安装Python3
MSSQL的SQL语句(日期时间)
CentOS8使用Python3脚本管理MSSQL2008R2
Python3脚本管理Access
Zabbix调用Python3脚本监控MSSQL
Python3脚本管理Linux下的MySQL
字符串的截取
datetime模块 |