山东科技大学小学期数据库大作业
来源:互联网 发布:淘宝店铺分析报告范文 编辑:程序博客网 时间:2024/04/28 22:41
一天写完了。。。。。挂这里就当是造福后人了,虽然写的这么乱估计也没什么人看,就当是见笑了
选题:
¨CREATE TABLE <表名> (<列名><数据类型>[<列完整性约束条件>][,<列名><数据类型>[<列完整性约束条件>]…][,<表完整性约束条件>])
¨ALTER TABLE <表名> [ADD <新列名><数据类型>[<列完整性约束>]] [DROP<列完整性约束名>][MODIFY <列名><数据类型>]
¨要求:
(1)能够以命令方式执行;
(2)能够以程序方式执行a
(3)提供课程设计报告。
效果如下:
代码如下:
#! usr/bin/python #coding=utf-8import re,osprint '''```````````````````````````*******``.............................```**`*`*******``````````````````````````*`********`..........................````**```********`````````````````````````****`*``**````````..................``*`***************````````````*********```**```````````````````````````````````*************************************``*```````````````****``````````````*``*****************************************````````````````*`*******```````````******************@**********************````````````````````******`````````````*````*@*************************```````````````````````````****````*``*`*`````````````**********@@**************``````````````````````````****```````````````````````````*****@@@@****`****```````````````````````````````***`*````````````*``*````````````**@*@@*********``````````````````````````````******```````````````***`````````````**********@*`````````````````**@@*````````*`****```````````````****````````````````**********````````....```****@@**```````*`*``````````````````**``**```````````````********...```........`.@**@@@@``````````````````````````````**`**```````````````*******.````........`*.***@@*````````````````````*@@@@@@*`*``*````````````````````***@*..``.......````*****```````````````*****@@`.**@*@@@***``````````````````````****.``........````````````````````````****@@```@@@@@@@@**``````````````````````****.`.........````````````````````````************@@`*```````````````````````````**...........```.`````````````````````*````*****`**```````````````````````````````.............````````````````````````````````````````````..``````````````````````.........``*********``````.```````````````````````````````.`````````````````````.`.....`@@*@@@@@@@@****``````````````````````````````````......````````````````````....`@@@*@@@@@@@@@**`....`````````````````````````````.......```````````````........****@@@@@@@@@@@*````````````````````````..``````````````````````````````......```@**@@@@@@@@@***`````````````````````.```.`````````````````````````````*....`````***@@@@@@*****`````````````````````````````.``````````````````````````*....````*****@********``.````````````````````````````````````````````````````***....````**************`````````````````````````````````````````````````````*****....`````**@@@@@@*******`*```````````*``````````````````````````````````````****....`.`.`******@@@@@@@@*```````````****``````````````````````````````````````***......````***********@@@@@@`@@@@@*@***`````````````````````````````````````**`**......```````************@**********```````````````````````````````````````*****.......``````*`******```*****`*****``````````````````````````````````````*``****.....````````````````````````````````````````````````````````````````````*******...````````````````````````````````````````````````````````````````````*`*******....```````````````````````````````````````````````````````````````````****`****...`````````````````````````````````````````````````````````````````````**`*****..``````````````````````````````````````````````````````````````````````********.``````````````````````````````````````````````````````````````````*````********..````````````````````````````````````````````````````````````````````**********author:sdust-iot-15-2-朱虹霖下面请开始你的表演:示例:1.创建表create table information ( `account` char(10) not null, `password` char(10) not null,`tem` char(32) , `wet` char(32) ,`lit` char(32), primary key( `account`) );2.查看所有表名show tables;3.查看表结构desc information;4.增加列alter table information add id int(10);5.删除列alter table information drop id6.修改列alter table information modify id int(10)7.删除表drop table information;'''.decode('utf-8').encode('gbk')if(os.path.isfile('data.txt')!=True ):#初始化,如果不存在文件就创建file_ready =open('data.txt','w+')file_ready.close()flag_exit=0while(1):print "doge>",if (flag_exit==1):breakstopword = ';'#读取到;时结束输入operation = ''for line in iter(raw_input, stopword):if line =="":passelse:if(line[-1]==";"):operation+=line[:-1]breakoperation += line + '\n'operation=operation.decode('gbk').encode('utf-8')file_object_r =open('data.txt')try:data = file_object_r.read( )if (data==""):#文件为空,就进行以下初始化操作data="[]"list= eval(data)#强转为listlist.append('{\'name\':\'strcture\'}')#list的第一个对象为数据库名和数据库结构,list[0].append(list_thislist)即可添加当前数据库进去else:list= eval(data)if(operation.replace(" ","").replace("\n","").lower()=="showtables"):for key in eval(str(list[0])):print key.decode('utf-8').encode('gbk')else:if (operation.replace(" ","").replace("\n","").lower()[:11]=="createtable"): #创建数据库sql_name= operation.split("(")[0].replace(" ","").replace("\n","")[11:]#以'('为界分割,去空格,createtable往后的字符,从而取出要创的数据库名if (sql_name!=""):list_this_sql= {sql_name:[]}#用于添加到list[0]中管理整个数据库结构else:print "数据库名为空,请重新编写数据库语句".decode('utf-8').encode('gbk')create_information = operation.replace(operation.split("(")[0],"").replace("\n","")list_patterns = create_information.split(',')primary_key=""for i in range (len(list_patterns)):#循环读取每一组创建元素的限制pattern_name,pattern_length,pattern_type,notnull="",0,"",Falsepatterns_describe=re.split(" " "{1,}",list_patterns[i])#以一至多个空格为界,进行划分for j in range (len(patterns_describe)):if (patterns_describe[j]!=""and patterns_describe[j]!="(" and patterns_describe[j]!=")"and patterns_describe[j].replace(" ","").replace("`","")!=""):#第一个非空且不为特殊符号的变量即为元素名if (patterns_describe[j]=="primary"):sample_primarykey = r"\(.*?\)"primary_key=re.findall(sample_primarykey,list_patterns[i] ,re.M)[0].replace(')','').replace('(','').replace('`','').replace(" ","")#print "primary_key "+primary_keybreakelse:pattern_name=patterns_describe[j].replace('`','').replace("(","")#print "pattern_name "+pattern_namebreaksample_length = r"\([0-9]*?\)"#匹配数据长度if (i==0):pattern_length=int(re.findall(sample_length,list_patterns[i][1:],re.M)[0].replace(')','').replace('(',''))#如果是第一行就要去掉第一个(else:if (pattern_name!=""):if (len(re.findall(sample_length,list_patterns[i],re.M))!=0):#排除uniquekey 的情况pattern_length=int(re.findall(sample_length,list_patterns[i],re.M)[0].replace(')','').replace('(',''))#print "length "+str(pattern_length)sample_type = r"[^ ]*?\(" #匹配数据类型if (i==0):pattern_type=re.findall(sample_type,list_patterns[i][1:],re.M)[0].replace(')','').replace('(','')else:pattern_type=re.findall(sample_type,list_patterns[i],re.M)[0].replace(')','').replace('(','')#print "type "+pattern_typesample_notnull = r"[ ]*?not[ ]*?null"#匹配not nullif (len(re.findall(sample_notnull,list_patterns[i][1:],re.M))!=0):notnull=Trueif (pattern_name!="" and pattern_type!="" ):#最后如果名字和数据类型都非空,就加入该条目list_this_sql[sql_name].append([pattern_name,pattern_type,pattern_length,False,notnull])else:if (pattern_name!="" and pattern_type=="")or(pattern_type.lower()!="char"and pattern_type.lower()!=("int")and pattern_type.lower()!="boolen"and pattern_type.lower()!="key"):print ("第"+str(i+1)+"组数据有误请重写数据库语句").decode('utf-8').encode('gbk')#break#break#跳出整个循环if (primary_key!=""):#最后设置主键for num in range (len(list_this_sql[sql_name])):#print "key "+list_this_sql[sql_name][num][0]+primary_keyif (list_this_sql[sql_name][num][0]==primary_key):list_this_sql[sql_name][num][3]=Truecheck_flag=0for i in range(len(list)):if (i==0):passelse :if (sql_name==eval(str(list[i]))[0][0]):check_flag=1if (check_flag==0):list_first=eval(str(list[0]))list_first [sql_name]=list_this_sqllist[0]= list_first#存进第一个管理所有的数据库的表里list_this_sql_foruse=[sql_name]for num in range (len(list_this_sql[sql_name])):list_this_sql_foruse.append(list_this_sql[sql_name][num][0])list.append("["+str(list_this_sql_foruse)+"]")file_object = open('data.txt',"w")file_object.write(str(list))file_object .close()print "创建成功".decode('utf-8').encode('gbk')else:print "已存在数据表,请重新创建".decode('utf-8').encode('gbk')else:if (operation.replace(" ","").replace("\n","").lower()[:9]=="droptable"): #删除数据库delete_flag=0sql_name_delete= operation.split("(")[0].replace(" ","").replace("\n","")[9:]#以'('为界分割,去空格,删除数据库往后的字符,从而取出要删的数据库名for i in range(len(list)):if (i==0):passelse:if (sql_name_delete==eval(str(list[i]))[0][0]):del list[i]dict_delete=eval(str(list[0]))del dict_delete[sql_name_delete]list[0]=dict_deletedelete_flag=1file_object = open('data.txt',"w")file_object.write(str(list))file_object .close()if (delete_flag==1):print "删除完成".decode('utf-8').encode('gbk')else :print "没有该表".decode('utf-8').encode('gbk')else :if (operation.replace(" ","").replace("\n","").lower()[:10]=="altertable"): #更改数据库operation_split=re.split(" " "{1,}",operation)#以一至多个空格为界,进行划分sql_name_alter=operation_split[2]order=operation_split[3]column_name=operation_split[4].replace("\n","")check_flag_fix=0for i in range(len(list)):if (i==0):passelse :if (sql_name_alter==eval(str(list[i]))[0][0]):check_flag_fix=1if(check_flag_fix==0):print ("不存在该表"+sql_name_alter+",请重新填写语句").decode('utf-8').encode('gbk')else:if (order.lower()=="add"): column_ty=operation_split[5].replace("\n","") column_type=column_ty.split("(")[0].replace("\n","") column_length=column_ty.split("(")[1].replace(")","").replace(" ","").replace("\n","") dict_add1=eval(str(list[0])) list_add1=dict_add1[sql_name_alter][sql_name_alter] add_flag=0 for i in range(len(list_add1)): if(list_add1[i][0]==column_name):add_flag=1 if(add_flag==1): print (sql_name_alter+"已存在对应栏目"+column_name+",无法添加").decode('utf-8').encode('gbk') else:list_for_add=[]list_for_add.append(column_name)list_for_add.append(column_type)list_for_add.append(column_length)list_for_add.append(False)list_for_add.append(False)dict_add1[sql_name_alter][sql_name_alter].append(list_for_add)list[0]=dict_add1for i in range (len(list)):if (i==0):passelse:list_cookie=eval(str(list[i]))if (list_cookie[0][0]==sql_name_alter):list_cookie[0].append(column_name)list[i]=list_cookiefile_object = open('data.txt',"w")file_object.write(str(list))file_object .close()print (sql_name_alter+"增加新栏目"+column_name+"成功").decode('utf-8').encode('gbk')else :if (order.lower()=="drop"):dict_drop1=eval(str(list[0]))list_add1=dict_drop1[sql_name_alter][sql_name_alter]drop_flag=0for i in range(len(list_add1)):if(list_add1[i][0]==column_name):drop_flag=1if(drop_flag==0):print (sql_name_alter+"不存在对应栏目"+column_name+",无法删除").decode('utf-8').encode('gbk')else:list_for_add=[]list_for_add.append(False)list_for_add.append(False)for i in range (len(dict_drop1[sql_name_alter][sql_name_alter])):if(eval(str(dict_drop1[sql_name_alter][sql_name_alter][i]))[0]==column_name):del dict_drop1[sql_name_alter][sql_name_alter][i]list[0]=dict_drop1for i in range (len(list)):if (i==0):passelse:list_cookie=eval(str(list[i]))if (list_cookie[0][0]==sql_name_alter):for j in range (len(list_cookie[0])):if(list_cookie[0][j]==column_name):del list_cookie[0][j]list[i]=list_cookiefile_object = open('data.txt',"w")file_object.write(str(list))file_object .close()print (sql_name_alter+"删除"+column_name+"完成").decode('utf-8').encode('gbk')else:if(order.lower()=="modify"):dict_drop1=eval(str(list[0]))list_add1=dict_drop1[sql_name_alter][sql_name_alter]drop_flag=0for i in range(len(list_add1)):if(list_add1[i][0]==column_name):drop_flag=1if(drop_flag==0):print (sql_name_alter+"不存在对应栏目"+column_name+",将直接添加").decode('utf-8').encode('gbk')else:list_for_add=[]list_for_add.append(False)list_for_add.append(False)for i in range (len(dict_drop1[sql_name_alter][sql_name_alter])):if(eval(str(dict_drop1[sql_name_alter][sql_name_alter][i]))[0]==column_name):del dict_drop1[sql_name_alter][sql_name_alter][i]list[0]=dict_drop1for i in range (len(list)):if (i==0):passelse:list_cookie=eval(str(list[i]))if (list_cookie[0][0]==sql_name_alter):for j in range (len(list_cookie[0])):if(list_cookie[0][j]==column_name):del list_cookie[0][j]list[i]=list_cookiefile_object = open('data.txt',"w")file_object.write(str(list))file_object .close()print (sql_name_alter+"删除"+column_name+"完成").decode('utf-8').encode('gbk')column_ty=operation_split[5].replace("\n","")column_type=column_ty.split("(")[0].replace("\n","")column_length=column_ty.split("(")[1].replace(")","").replace(" ","").replace("\n","")dict_add1=eval(str(list[0]))list_add1=dict_add1[sql_name_alter][sql_name_alter]add_flag=0for i in range(len(list_add1)):if(list_add1[i][0]==column_name):add_flag=1if(add_flag==1):passelse:list_for_add=[]list_for_add.append(column_name)list_for_add.append(column_type)list_for_add.append(column_length)list_for_add.append(False)list_for_add.append(False)dict_add1[sql_name_alter][sql_name_alter].append(list_for_add)list[0]=dict_add1for i in range (len(list)):if (i==0):passelse:list_cookie=eval(str(list[i]))if (list_cookie[0][0]==sql_name_alter):list_cookie[0].append(column_name)list[i]=list_cookiefile_object = open('data.txt',"w")file_object.write(str(list))file_object .close()print (sql_name_alter+"增加新栏目"+column_name+"成功").decode('utf-8').encode('gbk')else:if (operation.replace("\n","").replace(" ","").lower()[:4]=="desc"):desc_flag=0desc_name=operation.replace("\n","").replace(" ","").lower()[4:]for i in range(len(list)):if (i==0):passelse:if (desc_name==eval(str(list[i]))[0][0]):desc_flag=1if(desc_flag==1):print (" 元素名 数据类型 数据长度 是否主键 是否非空").decode('utf-8').encode('gbk')desc_list=eval(str(list[0]))[desc_name][desc_name]for i in range (len(desc_list)):print ("%09s %09s %09s %09s %09s" % (desc_list[i][0],desc_list[i][1],desc_list[i][2],desc_list[i][3],desc_list[i][4])).decode('utf-8').encode('gbk')else:print (desc_name+"表名错误,请重新填写").decode('utf-8').encode('gbk')else:if(operation.replace("\n","").replace(" ","").lower()=="exit"):print "按任意键退出程序".decode('utf-8').encode('gbk')flag_exit=1i=input()else:print '数据库语言错误,请重新填写'.decode('utf-8').encode('gbk')# except Exception:# print '数据库语言错误,请重新填写'.decode('utf-8').encode('gbk')finally: file_object_r.close()#pyinstaller -F# sql_name 数据库名 ,pattern_name 元素名,pattern_type 数据类型,pattern_length 长度,isEmpty 是否能为空 ,primary_key 主键# 元素名 数据类型 数据长度 primary_key是否主键 ,是否必须not null# {表名 tablename,[ [ "account" , "int", 0 , true , false ]]}# 表名 tablename 值 值 值 值# [ tablename id accout name value ],# [ 0,0,0,0]# create table information (# `account` char(10) not null,# ‘password’ char(10) not null,# ‘tem’ char(32) ,# ‘wet’ char(32) ,# ‘lit’ char(32),# primary key( `account`)# );#alter table information add id int(10) not null#alter table information drop id#alter table information modify id int(10) not null# 先切开 alter table ,然后判定informaition ,再判定下一个关于如何打包成exe可执行文件参照我上一篇博客
http://blog.csdn.net/qq_32545287/article/details/73292264
阅读全文
0 0
- 山东科技大学小学期数据库大作业
- 数据库大作业(山东科技大学)
- 大四下学期小项目实习总结
- 数据库大作业
- 数据库大作业
- 数据库大作业总结
- 2013 山东科技大学CSDN高校俱乐部春季巡讲
- 山东科技大学csdn高校俱乐部2012下学期工作总结
- 2013年山东科技大学csdn高校俱乐部纳新开始啦
- 山东科技大学CSDN高校俱乐部纳新圆满成功
- 山东科技大学第二届ACM校赛解题报告
- 简单计算 ( 山东科技大学第二届ACM校赛)
- 瑞神要考研(山东科技大学第四届ACM校赛)
- 山东科技大学联合集训赛问题 G: 数字逻辑练习题
- 山东科技大学多校联合集训 H题 1008: Envy
- 山东科技大学-2017年12数据结构期末考试真题
- 数据库系统课程大作业
- 数据库第一章(小作业)
- Android Widget桌面小部件二
- SDUT-1169 分数序列
- 遍历list的线程安全问题
- Word2Vec (Part 1): NLP With Deep Learning with Tensorflow (Skip-gram)
- LA 3708 Graveyard
- 山东科技大学小学期数据库大作业
- C#——面向对象——事件和委托——委托
- R语言常用包分类总结
- android从应用层到HRL层调用流程
- STL控件配置器allocator
- java 生成base64位验证码用于app端展示验证码
- OC GCD
- Word2Vec (Part 2): NLP With Deep Learning with Tensorflow (CBOW)
- JavaScript入门