本人使用的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。因此前期配置方面可能存在一些不足。除此之外,本人水平有限,代码拙劣,存在许多不足,敬请批评指正。鞠躬。