使用Python创建MySQL数据库实现字段动态添加以及动态的插入数据
应用场景:
我们须要设计一个数据库来保存多个文档中每一个文档的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数据库实现字段动态添加以及动态的插入数据的更多相关文章
- python连接mysql数据库,并进行添加、查找数据
1.删除MySQL数据表中的记录 DELETE FROM table_name WHERE condition; python操作mysql1数据库 import pymysql # 连接mysql数 ...
- python 创建mysql数据库
昨天用shell脚本创建数据库,涉及java调用,比较折腾,改用python直接创建数据库,比较方便,好了,直接上代码,相关注释也添加了 # _*_encoding:UTF-8_*_import My ...
- Python与Mysql 数据库的连接,以及查询。
python与mysql数据库的连接: pymysql是python中对数据库的连接模块:因此应当首先安装pymysql数据库模块. 执行pip install pymysql 命令. 然后在pyth ...
- python使用mysql数据库
一,安装mysql 如果是windows 用户,mysql 的安装非常简单,直接下载安装文件,双击安装文件一步一步进行操作即可. Linux 下的安装可能会更加简单,除了下载安装包进行安装外,一般的l ...
- 使用python将mysql数据库的数据转换为json数据
由于产品运营部需要采用第三方个推平台,来推送消息.如果手动一个个键入字段和字段值,容易出错,且非常繁琐,需要将mysql的数据转换为json数据,直接复制即可. 本文将涉及到如何使用Python访问M ...
- python专题-Mysql数据库(python2._+ Mysqldb)
Python使用MySQL数据库 MySQLdb驱动从2014年1月停止了维护. Python2 MySQLdb 一,安装mysql 如果是windows 用户,mysql 的安装非常简单,直接下载安 ...
- python入门(十七)python连接mysql数据库
mysql 数据库:关系型数据库mysql:互联网公司 sqllite:小型数据库,占用资源少,手机里面使用oracle:银行.保险.以前外企.sybase:银行+通信 互联网公司key:valuem ...
- Python使用MySQL数据库【转】
转自 Python使用MySQL数据库(新)[很详细][fetchall和fetchmany有啥区别呢?] - CSDN博客https://blog.csdn.net/u011350541/artic ...
- Python使用MySQL数据库(新)(转)
http://www.cnblogs.com/fnng/p/3565912.html 一,安装mysql 如果是windows 用户,mysql 的安装非常简单,直接下载安装文件,双击安装文件一步一步 ...
随机推荐
- javascript小记-闭包理解
这几天也在看一些javascript的知识,算是对以往的一个复习,现小记一下,方便以后查询. 相信大家在研究javascript的高级特性的时候,肯定会遇到闭包的概念,自己在各种复习资料中,也发现了不 ...
- 小米路由通过SSH添加静态路由表之后无法跳转的问题
1.确定系统已经开启了转发功能: /etc/sysctl.conf下的配置项目为net.ipv4.ip_forward = 1 2.关闭防火墙的REJECT,也就是修改/etc/config/fire ...
- 转:Windows中的命令行提示符里的Start命令执行路径包含空格时的问题
转自:http://www.x2009.net/articles/windows-command-line-prompt-start-path-space.html 当使用Windows 中的命令行提 ...
- patch补丁命令 P1 P0 P2
http://fancyxinyu.blog.163.com/blog/static/1823213662013719115245699/ http://blog.chinaunix.net/uid- ...
- C#程序集系列03,引用多个module
我们经常在项目中引用程序集.通常情况下,一个程序集包含一个module,但一个程序集也可以包含多个module.本篇就来体验:在一个可以被编译成.exe可执行文件的.cs文件中引用多个module. ...
- superobject
GITHUB: https://github.com/hgourvest/superobject # SuperObject ## What is JSON ? - JSON (JavaScript ...
- Appium+python自动化6-Remote远程控制
前言 在第三篇启动app的时候有这样一行代码driver = webdriver.Remote('http://192.168.1.1:4723/wd/hub', desired_caps),很多小伙 ...
- CAShapeLayer的path动画
CAShapeLayer的path动画 效果 源码 https://github.com/YouXianMing/Animations // // CAShapeLayerPathController ...
- Python Post img
from poster.encode import multipart_encode from poster.streaminghttp import register_openers import ...
- 基于zabbix 的memached 多实例监控
基于zabbix 的memached 多实例监控 zabbix agentd 配置文件新增配置: UserParameter=memcached.server.discovery[*],ps uax ...