python 连接 SQL Server 数据库

Posted liumengsong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 连接 SQL Server 数据库相关的知识,希望对你有一定的参考价值。

#!/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}	课程名:{1}		先行课:{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}	课程名:{1}		先行课:{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()

技术分享图片在进行python连接数据库的时候,是通过百度搜索一步步尝试的。刚开始用的是pymssql模块,写到进行数据库查询的函数时这个模块输出来的结果总是出现乱码,网上也提供了几种解决办法,‘utf8’、‘gbk’编码都尝试过了,都没能解决问题。后来想着java连接sql server是通过jdbc连接的,就搜了一下python的,在后来的验证中成功解决了出现的乱码问题。这次实现还学到了使用sql修改表数据时,每次只能进行一次修改,如果还要继续进行修改,需要重新写‘alter table 表名’。

以上是关于python 连接 SQL Server 数据库的主要内容,如果未能解决你的问题,请参考以下文章

python Python,SQL Server - 连接并获取数据

python连接SQL Server数据库

python 连接SQL SERVER 并读取其数据

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

python连接sql server数据库

Python读取配置文件,并连接数据库SQL Server