最近要将数据写到数据库里,学习了一下如何用 Python 来操作 SQL Server 数据库。
一、连接数据库:
首先,我们要连接 SQL Server 数据库,需要安装 pymssql 这个第三方库,打开 cmd,输入以下指令,等待安装完成即可。
pip install pymssql
连接数据库的代码如下:
importpymssqlprint('start to connect database')
connect= pymssql.connect('localhost','sa','123456','BackupTest_1') #数据库实例名/地址,用户名,密码,要连接的数据库名
print('connecting')ifconnect: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 丰富的工具库来绘制统计图表。