import MySQLdb
import os,sys
import string
dto=os.getcwd()+"\\dto"
dao=os.getcwd()+"\\dao"
idao=os.getcwd()+"\\dao\\impl"
service=os.getcwd()+"\\service"
iservice=os.getcwd()+"\\service\\impl"
config=os.getcwd()+"\\config" def convertColum(name):
a="_"+name.replace("_", " ")
word=string.capwords(a).replace(" ", "").replace("_", "")
return word def changeType(type):
if(type=="varchar"):
return "String"
elif(type=="int"):
return "Integer"
return "String"
def changeName(name):
return name.lower().capitalize() def creatrFile(fileP,fileN,fileS):
if(os.path.exists(fileP)!=True):
os.makedirs(fileP)
f=file(fileP+"\\"+fileN,'w')
f.write(fileS)
f.close() print("begining to connect Mysql.")
try:
dbName='db'
connection = MySQLdb.connect(user="root",passwd="",host="127.0.0.1",db=dbName)
cursor = connection.cursor()
cursor.execute( "SELECT TABLE_NAME,TABLE_COMMENT FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='BASE TABLE' AND TABLE_SCHEMA='"+dbName+"' " ) filestr=[]
configstr=[]
for row in cursor.fetchall():
tableName=row[0]
filestr.append('package dto;\n'
'import java.util.Date;\n'
'import java.util.HashMap;\n'
'import java.util.Map;\n'
'import data.BaseDto;\n'
'public class '+ changeName(tableName)+'Info extends BaseDto {\n'
' public '+ changeName(tableName) +'Info(){\n'
' this.setTbName("'+tableName+'");\n'
' }\n') cursor1 = connection.cursor()
cursor1.execute( "SELECT COLUMN_NAME as ColumnName,DATA_TYPE as dataType FROM INFORMATION_SCHEMA.COLUMNS where table_name='"+tableName+"' and TABLE_SCHEMA='"+dbName+"'" )
getsetStr=[]
for row1 in cursor1.fetchall():
filestr.append(' private '+changeType(row1[1])+' '+convertColum(row1[0])+';\n')
getsetStr.append(' public String get'+changeName(convertColum(row1[0]))+'() {\n'
' return '+row1[0]+';\n'
' }\n'
' public void set'+changeName(convertColum(row1[0]))+'('+changeType(row1[1])+' '+convertColum(row1[0])+') {\n'
' this.'+convertColum(row1[0])+' = '+convertColum(row1[0])+';\n'
' }\n')
getsetStr.append('}')
creatrFile(dto,changeName(tableName)+".java",''.join(filestr)+''.join(getsetStr)) #dao
filestr=[]
filestr.append('package dao;\nimport data.BaseDao;\n'
'import dto.*;\n'
'public interface I'+changeName(tableName)+'Dao implements IRepository<'+ changeName(tableName)+'Info> { \n'
'}')
creatrFile(dao,"I"+changeName(tableName)+"Dao.java",''.join(filestr)) filestr=[]
filestr.append('package dao.impl;\nimport data.BaseDao;\n'
'import dto.*;\n'
'public class '+changeName(tableName)+'DaoImpl extends BaseDao<'+ changeName(tableName)+'Info> implements I'+changeName(tableName)+'Dao { \n'
'}')
creatrFile(idao,""+changeName(tableName)+"DaoImpl.java",''.join(filestr)) #service
filestr=[]
filestr.append('package Service;\n'
'import dto.*;\n'
'public interface I'+changeName(tableName)+'Service { \n'
'}')
creatrFile(service,"I"+changeName(tableName)+"Service.java",''.join(filestr))
filestr=[]
filestr.append('package Service.impl;\nimport data.BaseDao;\n'
'import Service.*;\nimport com.google.inject.Inject;\n'
'public class '+changeName(tableName)+'ServiceImpl { \n'
' @Inject\n'
' private I'+changeName(tableName)+'Dao '+changeName(tableName)+'Dao;\n'
'}')
creatrFile(iservice,""+changeName(tableName)+"ServiceImpl.java",''.join(filestr)) filestr=[]
filestr.append('package cn.uc.custom.wallpaper.config;\n'
'import com.google.inject.*;\n'
'import play.modules.guice.GuiceSupport;\n' 'public class GuicyDummy extends GuiceSupport {\n'
' protected Injector configure() {\n'
' Injector injector = Guice.createInjector(new GuicyDummyModel());\n'
' return injector;\n'
' }\n'
'}\n')
creatrFile(config,"GuicyDummy.java",''.join(filestr)) configstr.append(" bind(I"+changeName(tableName)+"Dao.class).to("+changeName(tableName)+"DaoImpl.class).in(Singleton.class);\n");
configstr.append(" bind(I"+changeName(tableName)+"Service.class).to("+changeName(tableName)+"ServiceImpl.class).in(Singleton.class);\n");
filestr=[]
filestr.append('package cn.uc.custom.wallpaper.config;\n'
'import com.google.inject.*;\n'
'import play.modules.guice.GuiceSupport;\n' 'public class GuicyDummy extends GuiceSupport {\n'
' protected Injector configure() {\n'
' Injector injector = Guice.createInjector(new GuicyDummyModel());\n'
' return injector;\n'
' }\n'
'}\n')
creatrFile(config,"GuicyDummy.java",''.join(filestr))
filestr=[]
filestr.append('package cn.uc.custom.wallpaper.config;\n'
'import com.google.inject.*;\n'
'import play.modules.guice.GuiceSupport;\n' 'public class GuicyDummyModel extends AbstractModule {\n'
' public void configure() {\n')
filestr.append(''.join(configstr))
filestr.append(' }\n'
'}\n')
creatrFile(config,"GuicyDummyModel.java",''.join(filestr))
cursor.close()
except MySQLdb.Error,e:
print "Mysql Error %d: %s" % (e.args[0], e.args[1])

欢迎访问我的新站:学习树教育的第二入口

第一个python的更多相关文章

  1. 第一个python程序

    一个python程序的两种执行方式: 1.第一种方式是通过python解释器: cmd->python->进入python解释器->编写python代码->回车. 2.第二种方 ...

  2. 第一个python实例--监控cpu

    #第一个python实例:监控cpu #/bin/bash/env Python from __future__ import print_function from collections impo ...

  3. 一个python爬虫小程序

    起因 深夜忽然想下载一点电子书来扩充一下kindle,就想起来python学得太浅,什么“装饰器”啊.“多线程”啊都没有学到. 想到廖雪峰大神的python教程很经典.很著名.就想找找有木有pdf版的 ...

  4. Virtualenv: 一个Python环境管理工具(windown版本)

    1.安装virtualenv 在安装virtualenv之前,我们需要安装至少有一个版本的python:因为virtualenv是python的一个第三方模块,必须基于python环境才能安装: 如果 ...

  5. 3.第一个python程序

    学习任何一门语言的第一步,首先要写个'hello world',这算是程序员的一个传统.但在写之前,还有注意几个问题. 首先,python是一门脚本语言,而脚本语言的特点就是:我们写的代码会先由解释器 ...

  6. ipython, 一个 python 的交互式 shell,比默认的python shell 好用得多,支持变量自动补全,自动缩进,支持 bash shell 命令,内置了许多很有用的功能和函数

    一个 python 的交互式 shell,比默认的python shell 好用得多,支持变量自动补全,自动缩进,支持 bash shell 命令,内置了许多很有用的功能和函数. 若用的是fish s ...

  7. 第一个 Python 程序 - Email Manager Demo

    看了一些基础的 Python 新手教程后,深深感觉到 Python 的简洁与强大,这是我的第一个 Python Demo.下面是完整代码与执行截图. 代码: # encoding: utf-8 ''' ...

  8. 【Python脚本】Python创建删除文件-----------我的第一个Python脚本

    Python相对C++和Java来说,是解释性语言,非常适合来编写脚本. 很久之前就开始学习Python的语法了,今天写了第一个Python的脚本,来简化我的一些日常工作. 我平时学习的时候喜欢新建一 ...

  9. Python学习笔记4-如何快速的学会一个Python的模块、方法、关键字

    想要快速的学会一个Python的模块和方法,两个函数必须要知道,那就是dir()和help() dir():能够快速的以集合的型式列出该模块下的所有内容(类.常量.方法)例: #--encoding: ...

  10. 使用PyQt来编写第一个Python GUI程序

    原文:使用PyQt来编写第一个Python GUI程序 本文由 伯乐在线 - Lane 翻译,Daetalus 校稿.未经许可,禁止转载!英文出处:pythonforengineers.com.欢迎加 ...

随机推荐

  1. selenium+Eclipse+testNG读取XML内容登陆系统

    package sun; import java.io.File;import org.dom4j.Document;import org.dom4j.DocumentException;import ...

  2. HDU 1080 Human Gene Functions--DP--(变形最长公共子)

    意甲冠军:该基因序列的两端相匹配,四种不同的核苷酸TCGA有不同的分值匹配.例如T-G比分是-2,它也可以被加入到空格,空洞格并且还具有一个相应的核苷酸匹配分值,求最大比分 分析: 在空气中的困难格的 ...

  3. Swift语言指南(八)--语言基础之元组

    原文:Swift语言指南(八)--语言基础之元组 元组 元组(Tuples)将多个值组合为一个复合值.元组内的值可以是任何类型,各个元素不需要为相同类型(各个元素之间类型独立,互不干扰--Joe.Hu ...

  4. CSS3 制作向左、向右及关闭图标的效果

    先看一下效果 1.鼠标移入前的效果 2.鼠标移入的效果 3.制作步骤如下: 轮廓的CSS,就是利用圆角和宽度高度,制作出一个圆: <style> /*显示方式为 inline-block* ...

  5. Linux MySQL自己环境搭建的笔记

    cd /usr/share/selinuxsetenforce 0tar -xvf MySQL-5.6.12-1.el6.x86_64.rpm-bundle.tarrpm -qa|grep -i my ...

  6. zoj 3822 Domination(dp)

    题目链接:zoj 3822 Domination 题目大意:给定一个N∗M的棋盘,每次任选一个位置放置一枚棋子,直到每行每列上都至少有一枚棋子,问放置棋子个数的期望. 解题思路:大白书上概率那一张有一 ...

  7. [WPF]程序全屏

    原文:[WPF]程序全屏 代码: 使用:

  8. Write the code.Change the world.---WWDC2014

  9. VirtualBox更改虚拟机磁盘VDI的大小

    流程虚拟机中使用,有时会遇到磁盘大小是不够的,假设一套"动态分配的内存".通过下面的方法来手动扩展磁盘空间. 1.启动CMD命令行.进入VirtualBox安装文件夹.例如 cd  ...

  10. BEGINNING SHAREPOINT&#174; 2013 DEVELOPMENT 文件夹

    BEGINNING SHAREPOINT® 2013 DEVELOPMENT 文件夹 第一部分--開始使用SharePoint 2013 第1章节--SharePoint 2013 介绍 逐渐了解Sh ...