利用python实现在SQL Server数据库中的增、删、改、查

本文详细介绍了如何使用Python的pymssql库连接SQLServer数据库,包括安装库、建立连接、执行查询、插入、删除和更新数据的操作步骤。并强调了使用conn.commit()的重要性。

本人使用的python开发环境为Spyder,数据库使用SQL Server 2012.至于pycharm也是可以使用的,但是需要激活,比较麻烦。至于MySQL本人没有用过,但是道理是差不多的.

实现python和SQL Server的连接

首先开启TCP/IP 协议,具体方法如图所示:
在这里插入图片描述
然后在控制台中输入pip install pymssql
在这里插入图片描述
安装完成后,打开Spyder,新建.py文件,导入pymssql库

import pymssql

之后连接SQL Server数据库

conn = pymssql.connect(server='DESKTOP-LYZ', user='sa', password='12345', database='test')
cursor = conn.cursor()

“server”指服务器名称,我的是“DESKTOP-LYZ”
在这里插入图片描述
“user”对应在SQL Server 2012的”连接到服务器“面板中“身份验证”选择”SQL Server身份验证“时的登录名(sa),密码也是同样的道理,如果不知道密码可以到SQL Server中找到,此处不赘述。
“database"为要进行操作的数据库名,此处是"test”。
在这里插入图片描述
到此完成python和SQL Server的连接,接下来进入正题。

Select——查

select既是SQL语言中最重要的操作之一,又是检验增删改等其他操作是否成功的语句
在这里插入图片描述
对于表INFO,首先查询表INFO中所有元组的全部信息(Select…From)

sqlQuery = "select * from INFO" #查 (查询语句Query)    
        
try:
   cursor.execute(sqlQuery)
   results = cursor.fetchall()
   print(results)
   print(len(results))#元素个数
except:
   print(results)
conn.close()

查询结果如图所示,元素有四个
查询结果
查询表INFO中满足某个条件元组的信息(Select…From…Where)

sqlQuery = "select * from INFO Where ID = 2" #查(查询语句Query)     
        
try:
   cursor.execute(sqlQuery)
   results = cursor.fetchall()
   print(results)
   print(len(results))#元素个数
except:
   print(results)
conn.close()

查询结果如图所示,元组只有一个
在这里插入图片描述

Insert——增

利用Insert向表中追加元组,向表中追加一个元组(”5“,”zhu,“555”)

param=''
id="5"
name="zhu"
psw="555"
 

sqlNonQuery="insert into INFO values('%s','%s','%s')"%(id,name,psw)  #增(非查询语句NonQuery)
sqlQuery = "select * from INFO" #查(查询语句Query)  
        
try:
   cursor.execute(sqlNonQuery)
   cursor.execute(sqlQuery)
   results = cursor.fetchall()
   print(results)
   print(len(results))
except:
   print(results)
conn.close()

在语句的执行过程中,先利用非查询语句在表中追加元组,然后利用查询语句(Select)输出INFO中的所有元组信息,以检验是否非查询语句是否成功完成。Insert、Delete、Update全部为非查询语句。
查询结果如图所示,有五个元组:
在这里插入图片描述
但是有个问题!
回到SQL Server中,打开INFO表
在这里插入图片描述
INFO表居然还是老样子!!
解决这个问题需要使用conn.commit()执行存储过程,加上这条语句,利用Spyder新增的元组才能加到SQL Server中。

param=''
id="5"
name="zhu"
psw="555"
 

sqlNonQuery="insert into INFO values('%s','%s','%s')"%(id,name,psw)  #增(非查询语句NonQuery)
sqlQuery = "select * from INFO" #查(查询语句Query)  
        
try:
   cursor.execute(sqlNonQuery)
   
   conn.commit()#加上这条语句,利用python新增的元组才能加到SQL Server中。
   
   cursor.execute(sqlQuery)
   results = cursor.fetchall()
   print(results)
   print(len(results))
except:
   print(results)
conn.close()

现在可以了,成功追加元组!
在这里插入图片描述

Delete——删

delete的作用是删除表中的元组,如将ID为1的元组删除

sqlNonQuery="Delete  From  INFO   Where  ID = 1"  #删
sqlQuery = "select * from INFO" #查    
  
try:
   cursor.execute(sqlNonQuery)
   
   conn.commit()#加上这条语句,利用python删除的元组才能从SQL Server去掉。
   
   cursor.execute(sqlQuery)
   results = cursor.fetchall()
   print(results)
   print(len(results))
except:
   print(results)
conn.close()

执行结果如图所示,元组数目由5个变为4个
在这里插入图片描述
使用conn.commit(),保证SQL Server中元组也被删除
在这里插入图片描述

Update——改

update为用指定要求的值更新指定表中满足指定条件的元组的指定列的值,如将ID为4的元组的PSW设为444(之前为999)

sqlNonQuery="Update  INFO   set PSW=444 Where  ID = 4"  #改
sqlQuery = "select * from INFO" #查    
        
try:
   cursor.execute(sqlNonQuery)
   
   conn.commit()#加上这条语句,利用python修改的元组才能在在SQL Server中改变。
   
   cursor.execute(sqlQuery)
   results = cursor.fetchall()
   print(results)
   print(len(results))
except:
   print(results)
conn.close()

执行结果如图所示
在这里插入图片描述
在这里插入图片描述

结语

本人最初使用的python开发环境是pycharm,起初的一些配置是在pycharm之下完成的,后来发现pycharm到期了,所以才采用的Spyder。因此前期配置方面可能存在一些不足。除此之外,本人水平有限,代码拙劣,存在许多不足,敬请批评指正。鞠躬。

在 Flask 中对 SQL Server 数据库进行增删改查操作,可借助 Flask-SQLAlchemy 库实现。以下为具体实现步骤及示例代码: ### 1. 安装依赖库 需安装 `flask_sqlalchemy` 和 `pyodbc` 库,可使用以下命令进行安装: ```bash pip install flask_sqlalchemy pyodbc ``` ### 2. 配置数据库连接 在 Flask 应用里配置 SQL Server 数据库的连接信息: ```python from flask import Flask from flask_sqlalchemy import SQLAlchemy app = Flask(__name__) # 配置数据库连接信息 app.config['SQLALCHEMY_DATABASE_URI'] = 'mssql+pyodbc://username:password@server_name/database_name?driver=ODBC+Driver+17+for+SQL+Server' app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False db = SQLAlchemy(app) ``` 需将 `username`、`password`、`server_name` 和 `database_name` 替换为实际的数据库信息。 ### 3. 定义数据模型 定义一个简单的数据模型,例如一个 `User` 模型: ```python class User(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(80), nullable=False) email = db.Column(db.String(120), unique=True, nullable=False) def __repr__(self): return '<User %r>' % self.name ``` ### 4. 增删改查操作 #### 加数据 ```python @app.route('/add_user') def add_user(): new_user = User(name='John Doe', email='johndoe@example.com') db.session.add(new_user) db.session.commit() return 'User added successfully' ``` #### 询数据 ```python @app.route('/get_user/<int:user_id>') def get_user(user_id): user = User.query.get(user_id) if user: return f'User: {user.name}, Email: {user.email}' return 'User not found' ``` #### 更新数据 ```python @app.route('/update_user/<int:user_id>') def update_user(user_id): user = User.query.get(user_id) if user: user.email = 'newemail@example.com' db.session.commit() return 'User updated successfully' return 'User not found' ``` #### 除数据 ```python @app.route('/delete_user/<int:user_id>') def delete_user(user_id): user = User.query.get(user_id) if user: db.session.delete(user) db.session.commit() return 'User deleted successfully' return 'User not found' ``` ### 5. 运行应用 ```python if __name__ == '__main__': with app.app_context(): db.create_all() app.run(debug=True) ``` ### 完整代码示例 ```python from flask import Flask from flask_sqlalchemy import SQLAlchemy app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'mssql+pyodbc://username:password@server_name/database_name?driver=ODBC+Driver+17+for+SQL+Server' app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False db = SQLAlchemy(app) class User(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(80), nullable=False) email = db.Column(db.String(120), unique=True, nullable=False) def __repr__(self): return '<User %r>' % self.name @app.route('/add_user') def add_user(): new_user = User(name='John Doe', email='johndoe@example.com') db.session.add(new_user) db.session.commit() return 'User added successfully' @app.route('/get_user/<int:user_id>') def get_user(user_id): user = User.query.get(user_id) if user: return f'User: {user.name}, Email: {user.email}' return 'User not found' @app.route('/update_user/<int:user_id>') def update_user(user_id): user = User.query.get(user_id) if user: user.email = 'newemail@example.com' db.session.commit() return 'User updated successfully' return 'User not found' @app.route('/delete_user/<int:user_id>') def delete_user(user_id): user = User.query.get(user_id) if user: db.session.delete(user) db.session.commit() return 'User deleted successfully' return 'User not found' if __name__ == '__main__': with app.app_context(): db.create_all() app.run(debug=True) ```
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值