应用场景:

我们须要设计一个数据库来保存多个文档中每一个文档的keyword。

假如我们每一个文档字符都超过了1000,取当中出现频率最大的为我们的keyword。

如果每个文档的keyword都超过了300,每个文件的0-299号存储的是我们的keyword。那我们要建这样一个数据库。手动输入这种一个表是不现实的。我们仅仅有通过程序来帮我实现这个反复枯燥的操作。

详细的示意图例如以下所看到的:

首先图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

OperationalError: (2006, 'MySQL server has gone away')

这个时候对于MySQL server 你要做的就是运行一下以下这个命令

connect your_database

对于在python中的IDLE你须要运行:

conn = MySQLdb.connect(host = 'localhost', port = 3306, user = 'root', passwd = '****')
curs = conn.cursor()
conn.select_db('addtest')

password输入你自己数据库中设置的。

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和本文中參数设置是一样的。

转载请注明出处,http://blog.csdn.net/chichoxian/article/details/38224361,谢谢合作^^



















使用Python创建MySQL数据库实现字段动态添加以及动态的插入数据的更多相关文章

  1. python连接mysql数据库,并进行添加、查找数据

    1.删除MySQL数据表中的记录 DELETE FROM table_name WHERE condition; python操作mysql1数据库 import pymysql # 连接mysql数 ...

  2. python 创建mysql数据库

    昨天用shell脚本创建数据库,涉及java调用,比较折腾,改用python直接创建数据库,比较方便,好了,直接上代码,相关注释也添加了 # _*_encoding:UTF-8_*_import My ...

  3. Python与Mysql 数据库的连接,以及查询。

    python与mysql数据库的连接: pymysql是python中对数据库的连接模块:因此应当首先安装pymysql数据库模块. 执行pip install pymysql 命令. 然后在pyth ...

  4. python使用mysql数据库

    一,安装mysql 如果是windows 用户,mysql 的安装非常简单,直接下载安装文件,双击安装文件一步一步进行操作即可. Linux 下的安装可能会更加简单,除了下载安装包进行安装外,一般的l ...

  5. 使用python将mysql数据库的数据转换为json数据

    由于产品运营部需要采用第三方个推平台,来推送消息.如果手动一个个键入字段和字段值,容易出错,且非常繁琐,需要将mysql的数据转换为json数据,直接复制即可. 本文将涉及到如何使用Python访问M ...

  6. python专题-Mysql数据库(python2._+ Mysqldb)

    Python使用MySQL数据库 MySQLdb驱动从2014年1月停止了维护. Python2 MySQLdb 一,安装mysql 如果是windows 用户,mysql 的安装非常简单,直接下载安 ...

  7. python入门(十七)python连接mysql数据库

    mysql 数据库:关系型数据库mysql:互联网公司 sqllite:小型数据库,占用资源少,手机里面使用oracle:银行.保险.以前外企.sybase:银行+通信 互联网公司key:valuem ...

  8. Python使用MySQL数据库【转】

    转自 Python使用MySQL数据库(新)[很详细][fetchall和fetchmany有啥区别呢?] - CSDN博客https://blog.csdn.net/u011350541/artic ...

  9. Python使用MySQL数据库(新)(转)

    http://www.cnblogs.com/fnng/p/3565912.html 一,安装mysql 如果是windows 用户,mysql 的安装非常简单,直接下载安装文件,双击安装文件一步一步 ...

随机推荐

  1. 【scrapy】使用方法概要(三)(转)

    请初学者作为参考,不建议高手看这个浪费时间] 前两篇大概讲述了scrapy的安装及工作流程.这篇文章主要以一个实例来介绍scrapy的开发流程,本想以教程自带的dirbot作为例子,但感觉大家应该最先 ...

  2. 如何在windows server 2008上配置NLB群集

    参考:http://zlwdouhao.blog.51cto.com/731028/781828 前些天写了一篇关于NLB群集模式多播和单播的简单介绍.那么下面我们一起来探讨一下,如何在windows ...

  3. CHANGE USER WHEN I CONNECT TO TEAM FOUNDATION SERVER

    Question: I USE TEAM EXPLORER TO CONECT TO TEAM FOUNDATION SERVER 2010, BUT I DO NOT LOGIN OUT, AND ...

  4. ubuntu 添加CDROM安装源

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...

  5. 如何开启解决android studio的模拟器的问题

    来自:http://jingyan.baidu.com/article/03b2f78c0a19e75ea237ae24.html 有的时候因为电脑系统或者是安装的一些问题我们可能需要对症下药的解决模 ...

  6. 【docker】docker基础原理,核心技术简介

    关于docker的核心技术,就是以下的三大技术: 1.namespaces [命名空间] 使用linux的命名空间实现的进程间隔离.Docker 容器内部的任意进程都对宿主机器的进程一无所知. 除了进 ...

  7. dwz navtab 限制打开数量实例

    本文章给大家介绍一个dwz navtab 限制打开数量实例,希望此教程对各位同学会有所帮助 openTab: function(tabid, url, options){ //if found tab ...

  8. Android图片加载框架最全解析(一),Glide的基本用法

    现在Android上的图片加载框架非常成熟,从最早的老牌图片加载框架UniversalImageLoader,到后来Google推出的Volley,再到后来的新兴军Glide和Picasso,当然还有 ...

  9. 前端新手如何安装webstorm ,初步搭建react项目

    下载安装webstorm:配置成功: 配置成功后就可以开启webstorm项目了.(存微信收藏..) 1:在webstorm下配置node环境: 2:完成之后: React官方脚手架地址: https ...

  10. Asp.net FileUpload+Image制作头像效果

    在Web开发中会经常使用到个人信息注册,而个人信息中通常需要自己的头像或者照片.今天主要介绍一下使用FileUpload+img控件上传照片. FileUpLoad控件使用介绍 FileUpLoad控 ...