Python3.7构建的数据库管理系统课程设计

版权申诉
0 下载量 102 浏览量 更新于2024-10-03 收藏 30KB ZIP 举报
资源摘要信息: "基于 Python 3.7 的数据库管理系统课程设计" 在信息技术领域,数据库管理系统(DBMS)是核心组件之一,用于管理数据的存储、检索、更新等操作。本课程设计旨在介绍如何基于Python 3.7编程语言开发一个简单的数据库管理系统。Python作为一种高级编程语言,因其语法简洁、开发效率高而被广泛应用于教学和实际开发中。Python 3.7作为该语言的稳定版本,拥有强大的标准库支持和第三方库的丰富资源,是实现DBMS理想的选择。 数据库管理系统可以被定义为一种软件工具,它允许用户和程序创建、查询、更新和管理数据库。DBMS通常分为两类:关系型数据库管理系统和非关系型数据库管理系统。关系型数据库管理系统如MySQL、PostgreSQL、SQLite等,它们基于表格模型存储数据,并使用SQL(结构化查询语言)来操作数据。非关系型数据库管理系统则包括NoSQL数据库如MongoDB、Cassandra等,它们适用于大数据和实时Web应用,采用键值对、文档、宽列存储或图形数据库等模型。 本课程设计将利用Python 3.7来构建一个基础的关系型数据库管理系统。设计将涉及以下几个关键知识点和技能: 1. Python编程基础:了解Python的基本语法、数据结构、控制流和面向对象编程是构建DBMS的前提。Python 3.7的新增特性,如数据类(data classes)和f-string格式化,可能也会在课程中得到应用。 2. 数据库原理:掌握数据库的基本概念,如实体、属性、关系、主键、外键、索引等。理解关系模型和SQL语言,以及它们如何被用于创建和操作数据库表和数据。 3. 数据库连接和操作:学习如何使用Python标准库中的sqlite3模块或第三方库如SQLAlchemy来与SQLite数据库进行连接和交互。通过编写Python代码,执行创建表、插入数据、查询、更新和删除数据等SQL语句。 4. 数据库设计:了解如何进行数据库设计,包括如何制定合理的数据模型,进行规范化以避免数据冗余,以及如何设计有效的索引以优化查询性能。 5. 异常处理和事务管理:掌握在Python中处理数据库操作时可能遇到的异常,并了解事务的概念以及如何在Python中管理事务来保证数据的完整性和一致性。 6. 用户界面设计:如果DBMS需要被非技术用户使用,则需要一个用户友好的界面。可以学习如何使用Python的Tkinter库或Web框架如Flask或Django来创建一个图形用户界面(GUI)或Web界面。 7. 单元测试和调试:了解如何使用Python的unittest模块进行单元测试,确保代码的健壮性。同时,掌握基本的调试技巧,对代码进行分析和问题定位。 综上所述,基于 Python 3.7的数据库管理系统课程设计将综合运用Python编程技术、数据库理论、软件开发实践等多个方面的知识,培养学生的软件开发能力、问题分析能力和解决能力。通过本课程,学生将能够构建一个具备基本功能的数据库管理系统,为未来在数据密集型应用领域的深入学习和实践打下坚实的基础。

grant execute on dbms_crypto to system; declare input_string VARCHAR2 (200) := 'Secret Message'; output_string VARCHAR2(2000); encrypted_raw RAW(2000); decrypted_raw RAW(2000); num_key_bytes NUMBER := 256/8; key_bytes_raw RAW(32); encryption_type PLS_INTEGER := DBMS_CRYPTO.ENCRYPT_AES256 + DBMS_CRYPTO.CHAIN_CBC + DBMS_CRYPTO.PAD_PKCS5; begin DBMS_OUTPUT.PUT_LINE(input_string); key_bytes_raw := DBMS_CRYPTO.RANDOMBYTES(num_key_bytes); encrypted_raw := DBMS_CRYPTO.ENCRYPT ( src => UTL_I18N.STRING_TO_RAW(input_string, 'AL32UTF8'), typ => encryption_type, key => key_bytes_raw ); decrypted_raw := DBMS_CRYPTO.DECRYPT ( src => encrypted_raw, typ => encryption_type, key => key_bytes_raw ); output_string := UTL_I18N.RAW_TO_CHAR(decrypted_raw, 'AL32UTF8'); DBMS_OUTPUT.PUT_LINE(output_string); end; declare l_src_data varchar2(20); l_type pls_integer :=DBMS_CRYPTO.ENCRYPT_AES128 + DBMS_CRYPTO.CHAIN_CBC + DBMS_CRYPTO.PAD_PKCS5; l_key varchar2(20) :='0123456789123456'; l_encval raw(2000); CURSOR secret_cursor IS select phonenumber from customer; begin OPEN secret_cursor; LOOP FETCH secret_cursor INTO l_src_data; l_encval :=dbms_crypto.encrypt( src=>utl_i18n.string_to_raw(l_src_data,'AL32UTF8'), typ=>l_type, key=>utl_i18n.string_to_raw(l_key,'AL32UTF8')); DBMS_OUTPUT.PUT_LINE (l_encval); EXIT WHEN secret_cursor%NOTFOUND; END LOOP; CLOSE secret_cursor; end; declare ;_src_data row(100) :=hextoraw("190248129038903853275ijdkvjkad'); l_type pls_integer :=dbms_crypto.encrypt_aes128+ + DBMS_CRYPTO.CHAIN_CBC + DBMS_CRYPTO.PAD_PKCS5; l_key varchar2(20) :='0123456789123456'; l_decval raw(200); begin l_decval :=dbms_crypto.decrypt( src=>l_src_data, typ=>l_type, key=>utl_i18n.string_to_raw(l_key,'AL32UTF8')); end; SELECT Price FROM PRODUCT WHERE ProductID = 5;修正这一段代码

2023-05-26 上传

grant execute on dbms_crypto to system; -- 第一个代码块 declare input_string VARCHAR2 (200) := 'Secret Message'; output_string VARCHAR2(2000); encrypted_raw RAW(2000); decrypted_raw RAW(2000); num_key_bytes NUMBER := 256/8; key_bytes_raw RAW(32); encryption_type PLS_INTEGER := DBMS_CRYPTO.ENCRYPT_AES256 + DBMS_CRYPTO.CHAIN_CBC + DBMS_CRYPTO.PAD_PKCS5; begin DBMS_OUTPUT.PUT_LINE(input_string); key_bytes_raw := DBMS_CRYPTO.RANDOMBYTES(num_key_bytes); encrypted_raw := DBMS_CRYPTO.ENCRYPT(src => UTL_I18N.STRING_TO_RAW(input_string, 'AL32UTF8'), typ => encryption_type, key => key_bytes_raw); decrypted_raw := DBMS_CRYPTO.DECRYPT(src => encrypted_raw, typ => encryption_type, key => key_bytes_raw); output_string := UTL_I18N.RAW_TO_CHAR(decrypted_raw, 'AL32UTF8'); DBMS_OUTPUT.PUT_LINE(output_string); end; -- 第二个代码块 declare l_src_data varchar2(20); l_type pls_integer := DBMS_CRYPTO.ENCRYPT_AES128 + DBMS_CRYPTO.CHAIN_CBC + DBMS_CRYPTO.PAD_PKCS5; l_key varchar2(20) := '0123456789123456'; l_encval raw(2000); cursor secret_cursor is select phonenumber from customer; begin open secret_cursor; loop fetch secret_cursor into l_src_data; exit when secret_cursor%notfound; l_encval := dbms_crypto.encrypt(src => utl_i18n.string_to_raw(l_src_data,'AL32UTF8'), typ => l_type, key => utl_i18n.string_to_raw(l_key,'AL32UTF8')); dbms_output.put_line(l_encval); end loop; close secret_cursor; end; -- 第三个代码块 declare l_src_data raw(100) := hextoraw('190248129038903853275ijdkvjkad'); l_type pls_integer := DBMS_CRYPTO.ENCRYPT_AES128 + DBMS_CRYPTO.CHAIN_CBC + DBMS_CRYPTO.PAD_PKCS5; l_key varchar2(20) := '0123456789123456'; l_decval raw(200); begin l_decval := dbms_crypto.decrypt(src => l_src_data, typ => l_type, key => utl_i18n.string_to_raw(l_key,'AL32UTF8')); end; -- SQL 查询语句 SELECT Price FROM PRODUCT WHERE ProductID = 5;declare * ERROR at line 18: ORA-06550: line 18, column 1: PLS-00103: Encountered the symbol "DECLARE"报错

2023-05-26 上传