Python 学习笔记:Python 操作 SQL Server 数据库

      最近要将数据写到数据库里,学习了一下如何用 Python 来操作 SQL Server 数据库。

一、连接数据库:

      首先,我们要连接 SQL Server 数据库,需要安装 pymssql 这个第三方库,打开 cmd,输入以下指令,等待安装完成即可。

pip install pymssql

      连接数据库的代码如下:

import pymssql

print('start to connect database')
connect = pymssql.connect('localhost','sa','123456','BackupTest_1') #数据库实例名/地址,用户名,密码,要连接的数据库名
print('connecting')
if connect:
    print('DataBase connect success')
cursor = connect.cursor(); #获取操作游标

      输出结果如下:

 

二、利用游标操作数据库

①创建数据表:

sql = """
IF OBJECT_ID('Student', 'U') IS NOT NULL DROP TABLE Student
CREATE TABLE Student(id INT NOT NULL identity(1,1), Name NVARCHAR(100), Age INT, PRIMARY KEY(id))
"""
cursor.execute(sql) #执行sql语句
connect.commit() #提交到数据库执行

执行结果如下:

 

②插入数据:

insert_sql = """
INSERT INTO Student(Name,Age)
VALUES(%s,%d)
"""
data_insert = [('张三',21),('李四',22)] #要求是 tuple 类型数组
cursor.executemany(insert_sql,data_insert)
connect.commit()

执行结果如下:

 

③查询数据:

sql_select = "SELECT * FROM Student"
cursor.execute(sql_select)
result = cursor.fetchall() #利用游标获取全部查询结果
print(result)

执行结果如下:

Note:除了 fetchall() 之外,还有 fetchone() 和 fetchmany() 等方法可以获取数据。但是,游标是会记录取到结果的第几个记录,所以当你执行完上面的 fetchall() 之后,再执行 fetchone() 并打印结果时,会发现它是个空值。

 

④修改数据:

#该语句查询条件带有中文,记得加 N
sql_modify = """
UPDATE Student SET Age = 24 WHERE Name = N'张三'
"""
cursor.execute(sql_modify)
connect.commit()
cursor.execute("SELECT * FROM Student WHERE Name = N'张三'") #记得加 N
search_result = cursor.fetchall()
print(search_result)

执行结果如下,张三的年龄从21变更为24:

Note:因为我机子的环境是英文,所以建表时,将值为中文的字段类型设置成 NVACHAR,且当该字段作为查询条件时,需要在条件值字符串前面(不包括在字符串中)加一个 N,否则 SQL 语句执行后没效果,(0 row(s) affected)

 

⑤删除数据:

cursor.execute("SELECT * FROM Student")
search_before = cursor.fetchall()
print(search_before)
sql_delete = """
DELETE FROM Student WHERE Name = N'张三'
"""
cursor.execute(sql_delete)
connect.commit()
cursor.execute("SELECT * FROM Student")
search_after = cursor.fetchall()
print(search_after)

执行结果如下:

 

⑥关闭数据库连接:

connect.close()

 

总结:

      以上就是如何利用 Python 连接操作 SQL Server 数据库(增删查改),其实对于其他数据库(MySQL、SQLite 等)也是一个道理,只是需要导入对应的包而已,SQL 语法也是大同小异。本篇只是简单阐述了在 Python 中如何操作和获取数据库的数据,下篇博客将讲一下 Python 如何获取整张数据库表(包括表结构),并利用 Python 丰富的工具库来绘制统计图表。

posted @ 2019-05-27 12:31  三月七真可爱  阅读(1257)  评论(0编辑  收藏  举报