• 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()
  • 相关阅读:
    atitit...触发器机制 ltrigger mechanism sumup .的总结O8f
    atitit. 集合groupby 的实现(2)---自定义linq查询--java .net php
    atitit. groupby linq的实现(1)-----linq框架选型 java .net php
    atitit.j2ee 1.5 1.6 的不同跟 Servlet 3.0新特性总结
    Atitit. 常用街机系统and 模拟器总结 snk neo geo cps mame sfc smc
    atitit. access token是什么??微信平台公众号开发access_token and Web session保持状态机制
    atitit.二进制数据无损转字符串网络传输
    atitit.压缩算法 ZLib ,gzip ,zip 最佳实践 java .net php
    Atitit.现实生活中最好使用的排序方法-----ati排序法总结
    atitit.修复xp 操作系统--重装系统--保留原来文件不丢失
  • 原文地址:https://www.cnblogs.com/liumengsong/p/12195257.html
Copyright © 2020-2023  润新知