码迷,mamicode.com
首页 > 数据库 > 详细

python 连接 SQL Server 数据库

时间:2018-12-16 18:44:42      阅读:231      评论:0      收藏:0      [点我收藏+]

标签:efi   sql   coding   arc   copy   pass   函数   exception   数据库版本   

#!/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()

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

python 连接 SQL Server 数据库

标签:efi   sql   coding   arc   copy   pass   函数   exception   数据库版本   

原文地址:https://www.cnblogs.com/liumengsong/p/10127438.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!