python动态生成数据库表_使用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()
记住最后一定要记得最后三行这个语句,否则你的操作不会写入到数据库中。
最后就能够得到我们的结果,例如以下图所看到的:
程序的大体实现就是这样。
參考文献:
感谢楼上几位博主的无私奉献精神。博主是在没有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和本文中參数设置是一样的。
python动态生成数据库表_使用Python创建MySQL数据库实现字段动态添加以及动态的插入数据...相关推荐
- php mysql数据库 指南_用 PHP 创建 MySQL 数据库
创建一个数据库 创建和删除数据库你应该有管理特权.它很容易创建一个新的 MySQL 数据库.PHP 使用 mysql_query 函数创建一个MySQL 数据库.这个函数接受两个参数执行成功并返回 T ...
- python随机生成英文字母_在Python中生成随机字母
有没有一种方法可以在Python中生成随机字母(如random.randint,但用于字母)? random.randint的范围功能会很好,但是拥有仅输出随机字母的生成器总比没有好. 简单: > ...
- python自动生成word报告_利用Python实现报告自动生成
前几天,在网上看到一篇介绍利用Python组件实现MS word内容生成的文章.可能是很久没接触编码,感觉在技术领域变得有点孤陋寡闻了,看见一些实用的功能都觉的屌屌的.以前经常通过代码写Excel文件 ...
- mysql数据库二级_全国计算机二级mysql数据库模拟试题及答案
全国计算机二级mysql数据库模拟试题及答案 很多人都想拿到二级mysql证,那么在参考二级mysql考试前,可要做好充分的准备,下面小编为大家带来了全国计算机二级mysql数据库模拟试题及答案,欢迎 ...
- mysql数据库加密设备_一种基于MySQL数据库加密方法与流程
本发明涉及数据库加密技术技术领域,具体的讲涉及一种基于MySQL数据库加密方法. 背景技术: 聚通达DBSecurity是一款基于透明加密技术的数据防泄漏产品,该产品能够实现对数据库中的敏感数据加密存 ...
- mysql数据库招聘_新浪招聘 MySQL 数据库工程师啦
我浪业务高速发展,现在招聘 MySQL 数据库工程师啦, 欢迎朋友们过来聊聊. Base :北京海淀中关村软件园二期新浪总部大厦,传说中的后厂村 待遇当面聊,依据级别定噢 简历请砸此处: icer.r ...
- mysql数据库字符集_超详细的MySQL数据库字符集总结,值得收藏
MySQL支持多种字符集(character set)提供用户存储数据,同时允许用不同排序规则(collation)做比较.下面基于MySQL5.7介绍一下字符集相关变量的使用. 一.字符集.字符序的 ...
- mysql数据库访问控制_一文总结MySQL数据库访问控制实现原理
MySQL 访问控制实际上由两个功能模块共同组成,一个是负责"看守 MySQL 大门"的用户管理模块,另一个就是负责监控来访者每一个动作的访问控制模块.用户管理模块决定用户是否能登 ...
- mysql5.5数据库操作_命令行下mysql数据库基本操作
安装:在64位的Win7上安装的是mysql-5.5.28-winx64.msi, 才30M多一点.最初安装的是5.6的版本,每次安装完成之后不会自动进入"Mysql Server Inst ...
- mysql数据库扫描_使用nmap对mysql 数据库进行扫描
使用 nmap 对 mysql 数据库进行扫描nmap --script=mysql-databases.nse,mysql-empty-password.nse,mysql-enum.nse,mys ...
最新文章
- oracle统计事务,统计Oracle 查询事务数的方法
- 理解Spark的核心RDD
- Svg 嵌入可编辑的div
- Delphi面向对象学习随笔六:接口
- websocket vs keep-live
- 对象方法(包含es6)
- ensp路由器无法启动_品胜云路由器Breed刷入详细教程,技巧和注意事项,功能大增...
- Linux卸载搜狐,搜狐的linux笔试题
- 周鸿祎:不得不说的话
- ubuntu18的网关ip在哪里配_技术|如何在 Ubuntu 18.04 LTS 中配置 IP 地址
- android 多个模块,Android Studio:多个模块的多个APK
- linux系统中find怎么用,Linux系统中查找命令find的使用方法(一)
- 13 Zuul的配置
- 【设计模式专题】Singleton
- JavaSE_day01【Java概述、环境搭建、标识符、变量、基本数据类型】
- 四成单身、平均年薪19万、最爱买房,原来真实的程序员是这个样子的…...
- Python breakpoint()函数
- flash 批量编译发布fla 文件
- Leetcode_205_Isomorphic Strings
- ajax同步和异步区别
热门文章
- sp.coo_matrix() 详解
- Python入门100题 | 第070题
- Cracer渗透视频课程学习笔记——基础知识(1)
- 解决服务器连接错误Host ‘XXX’ is not allowed to connect to this MySQL server
- 李小璐PGONE事件对推荐系统的考验
- [特征工程系列三]显性特征的衍生
- 亿级别记录的mongodb分页查询java代码实现
- ReflectionToStringBuilder
- Mybatis like查询的写法--转载
- 【Python】matplotlib基础:数据可视化