来源:自学PHP网 时间:2015-04-16 10:50 作者: 阅读:次
[导读] 应用场景:我们需要设计一个数据库来保存多个文档中每个文档的关键字。假如我们每个文档字符都超过了1000,取其中出现频率最大的为我们的关键字。假设每个文档的关键字都超过了...
应用场景: 我们需要设计一个数据库来保存多个文档中每个文档的关键字。假如我们每个文档字符都超过了1000,取其中出现频率最大的为我们的关键字。 假设每个文档的关键字都超过了300,每一个文件的0-299号存储的是我们的关键字。那我们要建这样一个数据库,手动输入这样的一个表是不现实的,我们只有通过程序来帮我实现这个重复枯燥的操作。 具体的示意图如下所示: 首先图1是我们的原始表格: 图1 这个时候我们需要程序来帮我们完成自动字段的创建和数据的插入。 图2 上图是我们整个表的概况。下面我们就用程序来总结出这样的一个表格是怎么实现的。 ''' function description : Add the fields and data dynamicly. data : 2014-08-04 author : Chicho running : python addfileds.py ''' import MySQLdb #connect the database #the argvs based on the database you set. #Generally speaking, you should change the No. of the port 3306 , because it's easy to be attack #localhost = 127.0.0.1 conn = MySQLdb.connect(host = 'localhost', port = 3306, user = 'root', passwd = '*****') curs = conn.cursor() # create a database named addtest #Ensure the program can run multiple times,we should use try...exception try: curs.execute('create database addtest') except: print 'Database addtest exists!' conn.select_db('addtest') # create a table named addfields try: curs.execute('create table addfields(id int PRIMARY KEY NOT NULL,name text)') except: print('The table addfields exists!') # add the fileds try: for i in range(1): sql = "alter table addfields add key%s text" %i curs.execute(sql) except Exception,e: print e for i in range(4): #insert 5 lines sql = "insert into addfields set id=%s" %i curs.execute(sql) sql = "update addfields set name = 'hello%s' where id= %s"%(i,i) curs.execute(sql) for j in range(5): sql = "update addfields set key%s = 'world%s%s' where id=%s"%(j,i,j,i) curs.execute(sql) #this is very important conn.commit() curs.close() conn.close()记住最后一定要记得最后三行这个语句,否则你的操作不会写入到数据库中。 最后就可以得到我们的结果,如下图所示: 程序的大体实现就是这样。 参考文献: http://www.cnblogs.com/rollenholt/archive/2012/05/29/2524327.html http://www.blogjava.net/alpha/archive/2007/07/23/131912.html http://database.51cto.com/art/200811/97974_all.htm 感谢楼上几位博主的无私奉献精神,博主是在没有MySQL 的基础上参照这些blog实现的。如有什么地方不足欢迎提出 批评和建议。对你的意见我在此表示由衷的感谢。 彩蛋: 1.操作数据库出现的一些错误总结 如果你长时间为队数据库进行操作,再次进行操作的时候可能会出现以下错误: raise errorclass, errorvalue 这个时候对于MySQL server 你要做的就是执行一下下面这个命令 connect your_database 对于在python中的IDLE你需要执行: conn = MySQLdb.connect(host = 'localhost', port = 3306, user = 'root', passwd = '****') curs = conn.cursor() conn.select_db('addtest')密码输入你自己数据库中设置的。 2.UnicodeEncodeError: 'latin-1' codec can't encode characters in position出现上述这个错误的时候可以采用下面这个方法就可以解决。conn.set_character_set('utf8') curs.execute('set names utf8') curs.execute('SET CHARACTER SET utf8;') curs.execute('SET character_set_connection=utf8;')conn,curs和本文中参数设置是一样的。 |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com