zoukankan      html  css  js  c++  java
  • 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 丰富的工具库来绘制统计图表。

  • 相关阅读:
    [UGUI]事件机制
    [C#]CompareTo
    [Unity算法]交换排序(二):快速排序
    [Unity算法]交换排序(一):冒泡排序
    [Lua]string(二):string.sub处理中文
    [Lua]string(一):string库
    [Unity热更新]LuaFramework14.打包、加载和卸载策略
    [Unity热更新]LuaFramework13.事件派发
    数仓day01
    大数据学习day39----数据仓库02------1. log4j 2. 父子maven工程(子spring项目的创建)3.项目开发(埋点日志预处理-json数据解析、清洗过滤、数据集成实现、uid回补)
  • 原文地址:https://www.cnblogs.com/Sunny20181123/p/10929587.html
Copyright © 2011-2022 走看看