应用场景:

我们须要设计一个数据库来保存多个文档中每一个文档的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. js 闭包范式概述

    在前几篇文章中我介绍过js的闭包,这一篇主要简单的介绍一下js中闭包的范式. 那么何谓闭包的范式呢? 首先回想一下闭包的概念,闭包是外部函数与函数内部之间通信的桥梁,通过对函数的返回,使得外部的函数能 ...

  2. Spring Boot中使用redis的发布/订阅模式

    原文:https://www.cnblogs.com/meetzy/p/7986956.html redis不仅是一个非常强大的非关系型数据库,它同时还拥有消息中间件的pub/sub功能,在sprin ...

  3. pandas过滤包含特定字符串的行

    ~df.col3.str.contains('u|z')也就是在条件前面加~号,表示not

  4. 微博与Redis系统技术文章记录

    Redis 持久化,有两种: rdb 和 aof, rdb是记录一段时间内的操作,一盘的配置是一段时间内操作超过多少次就持久化. aof可以实现每次操作都持久化. 这里我们使用aof. 配置方式,打开 ...

  5. vue-cli项目优化,缩短首屏加载时间

    1.大文件定位 我们可以使用webpack可视化插件Webpack Bundle Analyzer 查看工程js文件大小,然后有目的的解决过大的js文件. 安装:npm install --save- ...

  6. bind原理图释

    (原文:http://blog.think-async.com/2010/04/bind-illustrated.html) 本文解释了bind 是如何工作的.为了清晰,我对图中的语法作了一些简化(例 ...

  7. scala 学习笔记十 一 伴生对象

    1.介绍 a.所谓伴生对象就是和某个class同名的object, 并且object 必须和class在同一个scala源文件中. b.在scala中,没有像java中的静态类,静态方法和静态成员等, ...

  8. python 读写CSV文件

    #-*- coding: UTF-8 -*- import csv import os def WriteToCsv(): '''写CSV文件''' titls = ['序号', '链接', '备注' ...

  9. Linq-分页查询

    var list = from s in db.t_address select s; & userid != null) { list = list.Where(v => v.user ...

  10. C++数据结构面试题

    原文:http://1527zhaobin.iteye.com/blog/1537110 一.判断链表是否存在环型链表问题:   说明:判断一个链表是否存在环,例如下面这个链表就存在环,n1--> ...