#!/usr/bin/python
# -*- coding:utf-8 -*-
import pymssql
import pyodbc
host = '127.0.0.1:1433'
user = 'sa'
password = '*****'
database = 'student'
# SERVER是服务器名称,DATABASE是数据库名称,UID是用户名,PWD是密码
odbc = 'DRIVER={SQL Server};SERVER=DESKTOP-MC70Q1A;DATABASE=student;UID=sa;PWD=******'

# 数据库pymssql连接
def db_connect():
    # 打开数据库连接
    db = pymssql.connect(host, user, password, database)
    # 使用cursor()方法创建一个游标对象cursor
    cursor = db.cursor()
    # 使用execute()方法执行SQL查询
    cursor.execute('SELECT @@VERSION')
    # 使用fetchone()方法获取单条数据
    data = cursor.fetchone()
    print('数据库版本为:%s' % data)
    # 关闭数据库连接
    db.close()

# 数据库pyodbc连接
def db_connect1():
    # 打开数据库连接
    db = pyodbc.connect(odbc)
    # 使用cursor()方法创建一个游标对象cursor
    cursor = db.cursor()
    # 使用execute()方法执行SQL查询
    cursor.execute('SELECT @@VERSION')
    # 使用fetchone()方法获取单条数据
    data = cursor.fetchone()
    print('数据库版本为:%s' % ''.join(data))
    # 关闭数据库连接
    db.close()

# 数据库pymssql插入
def insert_record():
    db = pymssql.connect(host, user, password, database)
    cursor = db.cursor()
    # 插入语句
    sql = """
    INSERT Course VALUES('10021','插入课程1',NULL)
    INSERT Course VALUES('10022','插入课程2',NULL)
    INSERT Course VALUES('10023','插入课程3',NULL)
    """
    try:
        # 执行sql语句
        cursor.execute(sql)
        # 提交到数据库执行
        db.commit()
        print('插入成功')
    except Exception as e:
        print('插入失败:%s' % e)
        # 如果发生错误就回滚
        db.rollback()
    finally:
        # 关闭数据库连接
        db.close()

# 数据库pyodbc插入
def insert_record1():
    db = pyodbc.connect(odbc)
    cursor = db.cursor()
    # 插入语句
    sql = """
    INSERT Course VALUES('10024','插入课程4',NULL)
    INSERT Course VALUES('10025','插入课程5',NULL)
    INSERT Course VALUES('10026','插入课程6',NULL)
    """
    try:
        # 执行sql语句
        cursor.execute(sql)
        # 提交到数据库执行
        db.commit()
        print('插入成功')
    except Exception as e:
        print('插入失败:%s' % e)
        # 如果发生错误就回滚
        db.rollback()
    finally:
        # 关闭数据库连接
        db.close()

# 数据库pymssql删除
def delete_record():
    db = pymssql.connect(host, user, password, database)
    cursor = db.cursor()
    # 删除语句
    sql = " DELETE FROM Course WHERE cno IN('10021','10022','10023')"
    try:
        # 执行sql语句
        cursor.execute(sql)
        # 提交到数据库执行
        db.commit()
        print('删除成功')
    except Exception as e:
        print('删除失败:%s' % e)
        # 如果发生错误就回滚
        db.rollback()
    finally:
        # 关闭数据库连接
        db.close()

# 数据库pyodbc删除
def delete_record1():
    db = pyodbc.connect(odbc)
    cursor = db.cursor()
    # 删除语句
    sql = "DELETE FROM Course WHERE cno IN('10024','10025','10026')"
    try:
        # 执行sql语句
        cursor.execute(sql)
        # 提交到数据库执行
        db.commit()
        print('删除成功')
    except Exception as e:
        print('删除失败:%s' % e)
        # 如果发生错误就回滚
        db.rollback()
    finally:
        # 关闭数据库连接
        db.close()

# pymssql创建数据库表
def create_table():
    db = pymssql.connect(host, user, password, database)
    cursor = db.cursor()
    # 创建表语句
    sql = """
    DROP TABLE
    IF EXISTS New_table
    CREATE TABLE New_table(
    name CHAR(20) NULL,
    age INT,
    sex CHAR(2))
    """
    try:
        # 执行sql语句
        cursor.execute(sql)
        # 提交到数据库执行
        db.commit()
        print('创建表成功')
    except Exception as e:
        print('创建表失败:%s' % e)
        # 如果发生错误就回滚
        db.rollback()
    finally:
        # 关闭数据库连接
        db.close()

# pyodbc创建数据库表
def create_table1():
    db = pyodbc.connect(odbc)
    cursor = db.cursor()
    # 创建表语句
    sql = """
    DROP TABLE
    IF EXISTS New_table1
    CREATE TABLE New_table1(
    name CHAR(20) NULL,
    age INT,
    sex CHAR(2))
    """
    try:
        # 执行sql语句
        cursor.execute(sql)
        # 提交到数据库执行
        db.commit()
        print('创建表成功')
    except Exception as e:
        print('创建表失败:%s' % e)
        # 如果发生错误就回滚
        db.rollback()
    finally:
        # 关闭数据库连接
        db.close()

# 数据库pymssql查询
def query_data():
    db = pymssql.connect(host, user, password, database)
    cursor = db.cursor()
    # 查询语句
    sql = "SELECT * FROM Course WHERE cbefore='高等数学'"
    try:
        # 执行sql语句
        cursor.execute(sql)
        # 获取所有记录列表
        results = cursor.fetchall()
        for row in results:
            cno = row[0]
            cname = row[1]
            cbefore = row[2]
            # 输出结果
            print('课程号:{0}\t课程名:{1}\t\t先行课:{2}'.format(cno, cname, cbefore))
    except Exception as e:
        print('查询失败:%s' % e)
    finally:
        # 关闭数据库连接
        db.close()

# 数据库pyodbc查询
def query_data1():
    db = pyodbc.connect(odbc)
    cursor = db.cursor()
    # 查询语句
    sql = "SELECT * FROM Course WHERE cbefore='高等数学'"
    try:
        # 执行sql语句
        cursor.execute(sql)
        # 获取所有记录列表
        results = cursor.fetchall()
        for row in results:
            cno = row[0]
            cname = row[1]
            cbefore = row[2]
            # 输出结果
            print('课程号:{0}\t课程名:{1}\t\t先行课:{2}'.format(cno, cname, cbefore))
    except Exception as e:
        print('查询失败:%s' % e)
    finally:
        # 关闭数据库连接
        db.close()

# 数据库pymssql修改
def alter_table():
    db = pymssql.connect(host, user, password, database)
    cursor = db.cursor()
    # 创建表语句
    sql = """
    ALTER TABLE New_table
    ALTER COLUMN sex CHAR(3)
    ALTER TABLE New_table
    DROP COLUMN age
    """
    try:
        # 执行sql语句
        cursor.execute(sql)
        # 提交到数据库执行
        db.commit()
        print('修改表成功')
    except Exception as e:
        print('修改表失败:%s' % e)
        # 如果发生错误就回滚
        db.rollback()
    finally:
        # 关闭数据库连接
        db.close()

# 数据库pyodbc修改
def alter_table1():
    db = pymssql.connect(host, user, password, database)
    cursor = db.cursor()
    # 创建表语句
    sql = """
    ALTER TABLE New_table1
    ALTER COLUMN sex CHAR(3)
    ALTER TABLE New_table1
    DROP COLUMN age
    """
    try:
        # 执行sql语句
        cursor.execute(sql)
        # 提交到数据库执行
        db.commit()
        print('修改表成功')
    except Exception as e:
        print('修改表失败:%s' % e)
        # 如果发生错误就回滚
        db.rollback()
    finally:
        # 关闭数据库连接
        db.close()

注意:

1.在使用pymssql模块连接SQL Server执行查询操作时会出现中文乱码问题,尝试了编码改成GBK以及UTF-8最终都以失败告终。执行插入操作以及其它为出现问题,可正常显示。

2.使用pyodbc模块连接SQL Server效果则相对较好,没有出现中文乱码问题,建议首选。

3.执行操作时一定要使用commit语句提交到数据库执行。

4.如果发生错误记得要使用rollback语句回滚。

python 连接 SQL Server 数据库的更多相关文章

  1. python连接sql server数据库实现增删改查

    简述 python连接微软的sql server数据库用的第三方模块叫做pymssql(document:http://www.pymssql.org/en/stable/index.html).在官 ...

  2. python 连接sql server数据库的示例代码

    首先,到http://pymssql.sourceforge.net/下载pymssql模块,必须安装这个模块才可以用python连接mysql 以下是sql server的操作代码,需要注意字符集 ...

  3. Python连接SQL Server数据库 - pymssql使用基础

    连接数据库 pymssql连接数据库的方式和使用sqlite的方式基本相同: 使用connect创建连接对象 connect.cursor创建游标对象,SQL语句的执行基本都在游标上进行 cursor ...

  4. python连接sql server数据库

    记录一下pyodbc连接数据库的使用方法和注意事项,基于python2.7:  前提: pip install pyodbc  .下载pyodbc包.   pyodbc.connect('DRIVER ...

  5. Python 连接Sql Server数据库 MSSql

    Python 想要和MSSql数据库进行交互,首先要下载名为"pymssql"的包,然后import该包即可. 地址:https://pypi.python.org/pypi/py ...

  6. Python 连接SQL Server数据库 - pymssql使用基础

    1.  官方api http://www.pymssql.org/en/stable/ref/pymssql.html 我学习自这里

  7. Python3.7.1学习(八) Python访问SQL Server数据库

    一.pip install pymssql即可安装pymssql库 二.Python连接SQL Server数据库     实例代码如下: # -*- coding:utf-8 -*-"&q ...

  8. python 使用pymssql连接sql server数据库

    python 使用pymssql连接sql server数据库   #coding=utf-8 #!/usr/bin/env python#------------------------------ ...

  9. python 连接sql server

    linux 下pymssql模块的安装 所需压缩包:pymssql-2.1.0.tar.bz2freetds-patched.tar.gz 安装: tar -xvf pymssql-2.1.0.tar ...

随机推荐

  1. qt 自定义窗口绘制正弦曲线

    circlewidget.h #ifndef CIRCLAWIDGET_H #define CIRCLAWIDGET_H #include <QFrame> #include<QVe ...

  2. CENTOS7安装R语言环境

    CENTOS7安装R语言环境 yum install texinfo.x86_64 yum install texlive.x86_64 cd /opt wget https://mirrors.tu ...

  3. list extend 和 append

    append 一次追加一个列表 extend 一次追加所有的元素 单个的形式加入

  4. CSS属性Display(显示)和Visibility(可见性)

    隐藏一个元素可以通过把display属性设置为“none”,或把visibility属性设置为“hidden”.但是请注意,这两种方法会产生不同的效果. Visibility:hidden可以隐藏某个 ...

  5. windows上安装redis并安装php5.6的redis扩展

    http://www.884358.com/php-redis/ 1.安装redis Redis 没有官方的Windows版本,但是微软开源技术团队(Microsoft Open Tech group ...

  6. C#的类

    一.String类 1.Length 字符的长度 string x = Console.ReadLine();int i = x.Length;// Length 是获取字符串的长度(从1开始数)Co ...

  7. win10 uwp 依赖属性

    本文告诉大家如何使用依赖属性,包括在 UWP 和 WPF 如何使用. 本文不会告诉大家依赖属性的好处,只是简单告诉大家如何使用 在 UWP 和 wpf ,如果需要创建自己的依赖属性,可以使用代码片,在 ...

  8. java数组简介

    数组(Array)是Java 语言中内置的一种基本数据存储结构,通俗的理解,就是一组数的集合,目的是用来一次存储多个数据.数组是程序中实现很多算法的基础,可以在一定程度上简化代码的书写. 备注: 数组 ...

  9. java Class中得到构造方法Constructor、方法Method、字段Field

    常用方法: Constructor类用于描述类中的构造方法: Constructor<T> getConstructor(Class<?>... parameterTypes) ...

  10. 28款GitHub最流行的开源机器学习项目,推荐GitHub上10 个开源深度学习框架

    20 个顶尖的 Python 机器学习开源项目 机器学习 2015-06-08 22:44:30 发布 您的评价: 0.0 收藏 1收藏 我们在Github上的贡献者和提交者之中检查了用Python语 ...