Board logo

标题: Python3脚本管理MSSQL2014 [打印本页]

作者: admin    时间: 2019-10-8 09:37     标题: Python3脚本管理MSSQL2014

笺注:这是在 使用Navicat远程管理MSSQL2014 的基础上进行的。 创建了一个库data1: 图片1.png 创建了一个数据库用户zhuohua,对库data1有完全控制的权限: 图片2.png ############ Win7客户端连接公网安装第三方库(pyodbc):(可以指定软件的版本) pip3 install pyodbc==4.0.30 -i http://mirrors.aliyun.com/pypi/simple --trusted-host=mirrors.aliyun.com 图片1.png 备注: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 (Build 9600: ) (Hypervisor)\n', ) ---------- 数据库连接成功,数据库的版本信息: 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 (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的表结构: 图片2.png ###### 例子四: 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; 图片3.png ###### 例子五: 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的表数据: 图片4.png ###### 例子六: 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))] ---------- 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的表数据: 图片5.png ###### 例子九: 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'] C:\Users\jacky\Desktop> 使用Navicat查看库data1的表t_1的表数据: 图片6.png ###### 例子十: 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))] ---------- (1, '李大杰', 18.0, datetime.datetime(2019, 9, 9, 0, 0), datetime.datetime(2019, 9, 9, 7, 9, 18)) 李大杰 18.0 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))] ---------- 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 2019-10-08 00:00:00 2019-10-08 05:06:08 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))] ---------- id=3,姓名=zhuohua,数学成绩=38.5,日期=2020-04-02,时间=09:44:21 ---------- 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 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, ) ---------- 38.5 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的表数据: 图片7.png 备注:假如没有找到匹配的记录进行更改,会直接跳过,不会报错的。 ###### 例子十五: 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的表数据: 图片8.png ###### 例子十六: 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的表数据: 图片9.png 备注:假如没有找到匹配的记录进行删除,会直接跳过,不会报错的。 ###### 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 图片10.png 备注: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, ) ---------- 32767 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的表数据: 图片11.png 注释:库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模块

图片附件: 图片1.png (2022-4-2 12:27, 205.9 KB) / 下载次数 83
http://blog.zhuohua.store/attachment.php?aid=19263&k=d4b4e09d6152db24b04fad4e16bad512&t=1714242848&sid=0W7OSm



图片附件: 图片2.png (2022-4-2 12:28, 42.58 KB) / 下载次数 90
http://blog.zhuohua.store/attachment.php?aid=19264&k=75c1029e3ed0c5f479dc4f4a3913971b&t=1714242848&sid=0W7OSm



图片附件: 图片1.png (2022-5-6 15:23, 99.74 KB) / 下载次数 77
http://blog.zhuohua.store/attachment.php?aid=19905&k=85b28cbe831206ff3ac30c1b9813f60d&t=1714242848&sid=0W7OSm



图片附件: 图片2.png (2022-5-6 15:27, 88.48 KB) / 下载次数 81
http://blog.zhuohua.store/attachment.php?aid=19906&k=27bde6986b0b7fc5a1f56cb10e6152b3&t=1714242848&sid=0W7OSm



图片附件: 图片3.png (2022-5-6 15:28, 35.86 KB) / 下载次数 82
http://blog.zhuohua.store/attachment.php?aid=19907&k=41288e70ff62b6dcd368f13b31a8d447&t=1714242848&sid=0W7OSm



图片附件: 图片4.png (2022-5-6 15:29, 54.28 KB) / 下载次数 87
http://blog.zhuohua.store/attachment.php?aid=19908&k=d58bea4c003f7a7af124ee04b643e24b&t=1714242848&sid=0W7OSm



图片附件: 图片5.png (2022-5-6 15:31, 30.22 KB) / 下载次数 33
http://blog.zhuohua.store/attachment.php?aid=19909&k=f4db37998c268d49cac1c12992a5ac22&t=1714242848&sid=0W7OSm



图片附件: 图片6.png (2022-5-6 15:32, 50.72 KB) / 下载次数 38
http://blog.zhuohua.store/attachment.php?aid=19910&k=94947f4c5e7582a0ffc20a9fc8df838b&t=1714242848&sid=0W7OSm



图片附件: 图片7.png (2022-5-6 15:37, 51.74 KB) / 下载次数 39
http://blog.zhuohua.store/attachment.php?aid=19911&k=d88986f6a19cce1bbe95d04e8a4d80c7&t=1714242848&sid=0W7OSm



图片附件: 图片8.png (2022-5-6 15:38, 51.77 KB) / 下载次数 41
http://blog.zhuohua.store/attachment.php?aid=19912&k=46d58d85d97a9c48af8669a0add85484&t=1714242848&sid=0W7OSm



图片附件: 图片9.png (2022-5-6 15:39, 34.68 KB) / 下载次数 40
http://blog.zhuohua.store/attachment.php?aid=19913&k=ecd9f9cbd93c861f6176012c4b6c518c&t=1714242848&sid=0W7OSm



图片附件: 图片10.png (2022-5-6 15:40, 100.55 KB) / 下载次数 34
http://blog.zhuohua.store/attachment.php?aid=19914&k=3be14d70ebda2d2ec5bc414eb9819e98&t=1714242848&sid=0W7OSm



图片附件: 图片11.png (2022-5-6 15:42, 32.81 KB) / 下载次数 41
http://blog.zhuohua.store/attachment.php?aid=19915&k=25b7b8f00051f8d1a5ada858fffdf130&t=1714242848&sid=0W7OSm






欢迎光临 blog.zhuohua.store (http://blog.zhuohua.store/) Powered by Discuz! 7.2