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 丰富的工具库来绘制统计图表。

  • 相关阅读:
    iOS objc_msgSend 报错解决方案
    不再以讹传讹,GET和POST的真正区别
    HTTP Get请求URL最大长度
    [转]浅论ViewController的加载 -- 解决 viewDidLoad 被提前加载的问题(pushViewController 前执行)
    ASIHTTPRequest-断点续传需要原网站支持!
    iOS关于error can't allocate region的一点发现
    Xcode 5.1.1 与 Xcode 6.0.1 的共存之路(建议大家在升级Xcode 6.0.1 的时候保留Xcode 5.1.1)
    监测uitableview 向上滑动和向下滑动的事件
    Xcode5和6共存时,如何发布应用到商店
    利用MPMoviePlayerViewController 播放视频 iOS
  • 原文地址:https://www.cnblogs.com/Sunny20181123/p/10929587.html
Copyright © 2011-2022 走看看