zoukankan      html  css  js  c++  java
  • python 连接 SQL Server 数据库(使用 pyodbc 库)

    import pyodbc
    
    # SERVER 是服务器名称,DATABASE 是数据库名称,UID 是用户名,PWD 是密码
    odbc = 'DRIVER={SQL Server};SERVER=DESKTOP-Q2JCMJD;DATABASE=WMS;UID=sa;PWD=******'
    
    
    # 数据库连接
    def db_connect():
        # 打开数据库连接
        db = pyodbc.connect(odbc)
        # 使用 cursor()方法创建一个游标对象 cursor
        cursor = db.cursor()
        # 使用 execute()方法执行 SQL 查询
        cursor.execute('select @@version')
        # 使用 fetchone()方法获取单条数据
        data = cursor.fetchone()
        print(f'Database version: {data[0]}')
        # 关闭数据库连接,此时自动关闭多有游标对象
        db.close()
    
    
    # 创建数据库表
    def create_table():
        # 打开数据库连接
        db = pyodbc.connect(odbc)
        # 使用 cursor()方法创建一个游标对象 cursor
        cursor = db.cursor()
        # 使用 execute()方法执行 SQL,如果表存在就删除
        cursor.execute('drop table if exists teacher')
        # 使用预处理语句创建表
        sql = '''create table teacher(
            id int primary key,
            name varchar(20) not null,
            sex varchar(2) not null,
            age int not null)'''
        try:
            cursor.execute(sql)
            # 提交到数据库执行
            db.commit()
            print('CREATE TABLE SUCCESS.')
        # 捕获与数据库相关的错误
        except pyodbc.Error as err:
            print(f'CREATE TABLE FAILED, CASE:{err}')
            # 如果发生错误就回滚
            db.rollback()
        finally:
            # 关闭数据库连接
            db.close()
    
    
    # 删除数据库表
    def drop_table():
        # 打开数据库连接
        db = pyodbc.connect(odbc)
        # 使用 cursor()方法创建一个游标对象 cursor
        cursor = db.cursor()
        # 使用预处理语句删除表
        sql = 'drop table teacher'
        try:
            cursor.execute(sql)
            # 提交到数据库执行
            db.commit()
            print('DROP TABLE SUCCESS.')
        # 捕获与数据库相关的错误
        except pyodbc.Error as err:
            print(f'DROP TABLE FAILED, CASE:{err}')
            # 如果发生错误就回滚
            db.rollback()
        finally:
            # 关闭数据库连接
            db.close()
    
    
    # 数据库插入
    def insert_record():
        # 打开数据库连接
        db = pyodbc.connect(odbc)
        # 使用 cursor()方法创建一个游标对象 cursor
        cursor = db.cursor()
        # SQL 插入语句
        sql = "insert information values(1001, '小明', '男', 18)"
        try:
            # 执行 SQL 语句
            cursor.execute(sql)
            # 提交到数据库执行
            db.commit()
            print('INSERT SUCCESS.')
        # 捕获与数据库相关的错误
        except pyodbc.Error as err:
            print(f'INSERT FAILED, CASE:{err}')
            # 如果发生错误就回滚
            db.rollback()
        finally:
            # 关闭数据库连接
            db.close()
    
    
    # 数据库删除
    def delete_record():
        # 打开数据库连接
        db = pyodbc.connect(odbc)
        # 使用 cursor()方法创建一个游标对象 cursor
        cursor = db.cursor()
        # SQL 删除语句
        sql = "delete from information where sex='女'"
        try:
            # 执行 SQL 语句
            cursor.execute(sql)
            # 提交到数据库执行
            db.commit()
            print('DELETE SUCCESS.')
        # 捕获与数据库相关的错误
        except pyodbc.Error as err:
            print(f'DELETE FAILED, CASE:{err}')
            # 如果发生错误就回滚
            db.rollback()
        finally:
            # 关闭数据库连接
            db.close()
    
    
    # 数据库更新
    def update_record():
        # 打开数据库连接
        db = pyodbc.connect(odbc)
        # 使用 cursor()方法创建一个游标对象 cursor
        cursor = db.cursor()
        # SQL 更新语句
        sql = "update information set age=25 where name='小明'"
        try:
            # 执行 SQL 语句
            cursor.execute(sql)
            # 提交到数据库执行
            db.commit()
            print('UPDATE SUCCESS.')
        # 捕获与数据库相关的错误
        except pyodbc.Error as err:
            print(f'UPDATE FAILED, CASE:{err}')
            # 如果发生错误就回滚
            db.rollback()
        finally:
            # 关闭数据库连接
            db.close()
    
    
    # 数据库查询
    def query_record():
        # 打开数据库连接
        db = pyodbc.connect(odbc)
        # 使用 cursor()方法创建一个游标对象 cursor
        cursor = db.cursor()
        # SQL 查询语句
        sql = 'select * from information'
        try:
            # 执行 SQL 语句
            cursor.execute(sql)
            '''
            fetchone():该方法获取下一个查询结果集,结果集是一个对象。
            fetchall():接收全部返回结果行。
            rowcount:返回执行 execute()方法后影响的行数
            '''
            # 获取所有记录列表
            results = cursor.fetchall()
            for row in results:
                num = row[0]
                name = row[1]
                sex = row[2]
                age = row[3]
                # 输出结果
                print(f'id:{num}, name:{name}, sex:{sex}, age:{age}')
        # 捕获与数据库相关的错误
        except pyodbc.Error as err:
            print(f'QUERY MySQL table FAILED, CASE:{err}')
        finally:
            # 关闭数据库连接
            db.close()
    
    
    if __name__ == '__main__':
        db_connect()
  • 相关阅读:
    用Python完成一个汇率转换器
    鸿蒙如何用JS开发智能手表App
    鸿蒙如何用JS开发智能手表App
    SAP Spartacus SplitViewComponent Migration 的一个具体例子
    SAP Spartacus B2B 页面 Popover Component 的条件显示逻辑
    SAP Spartacus 升级时关于 schematics 的更新
    SAP Spartacus B2B 页面 Disable 按钮的显示原理
    SAP Spartacus B2B 页面 Disable Confirmation 对话框的显示原理
    通过 Feature Level 动态控制 SAP Spartacus 的页面显示
    SAP Commerce Cloud Build Manifest Components
  • 原文地址:https://www.cnblogs.com/liumengsong/p/12195257.html
Copyright © 2011-2022 走看看