用python从数据库生成c#代码

懒惰的我要改变世界! 还有个题外话名言:寂寞驱动世界!----我

 

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Created by weilai on 2016/11/25


import pymysql


def format_db(formatter):
    conn = pymysql.connect(host='172.17.1.241', port=3306, user='root123', passwd='root123', db='businesssystemreport', charset='UTF8')
    cur = conn.cursor()
    cur.execute("SHOW FULL COLUMNS FROM businesssystemreport.productandcompanystatisday;")
    for i in cur:
        formatter(i)
    cur.close()
    conn.close()


def template1(field):
    code_temp = 'modelBase.AddUpdateFields("{field_name}", {obj}.{field_name});{remark}'
    code_result = code_temp.format(obj='model', field_name=field[0], remark=field[8])
    print(code_result)


def template2(field):
    code_temp = 'modelBase.AddUpdateFields("{field_name}", {f_vaule});{remark}'
    code_result = code_temp.format(obj='', field_name=field[0], remark=field[8], f_vaule='null')
    print(code_result)


def table_to_json(field):
    code_temp = '"{field_name}":"",'
    code_result = code_temp.format(field_name=field[0])
    print(code_result)


def format_field(field):
    # result.KeyID = dataReader["KeyID"] == DBNull.Value ? string.Empty : Convert.ToString(dataReader["KeyID"].ToString());
    code_temp = '{obj}.{name} = dr["{name}"] == DBNull.Value?{default}:Convert.{converter}(dr["{name}"].ToString());{remark}'
    convert_default_value, convert_fun = value_convert(field[1])
    code_result = code_temp.format(obj = 'result', name=field[0], default = convert_default_value, converter = convert_fun, remark = field[8])
    print(code_result)


def table_to_model(field):
    # result.KeyID = dataReader["KeyID"] == DBNull.Value ? string.Empty : Convert.ToString(dataReader["KeyID"].ToString());
    code_temp = '/// <summary>\n/// {remark}\n/// </summary>\npublic {type} {name} {{ get; set; }} = {default};\n'
    convert_default_value, convert_fun = value_type(field[1])
    code_result = code_temp.format(obj = 'result', name=field[0], default = convert_default_value, type = convert_fun, remark = field[8])
    print(code_result)


def value_convert(ft):
    if len(ft) >= 3 and ft[0:3] == 'int':
        default_value = '0'
        convert_fun = 'ToInt32'
        return default_value, convert_fun
    if len(ft) >= 7 and ft[0:7] == 'varchar':
        default_value = 'string.Empty'
        convert_fun = 'ToString'
        return default_value, convert_fun
    if len(ft) >= 4 and ft[0:4] == 'char':
        default_value = 'string.Empty'
        convert_fun = 'ToString'
        return default_value, convert_fun
    if len(ft) >= 7 and ft[0:7] == 'tinyint':
        default_value = '0'
        convert_fun = 'ToInt32'
        return default_value, convert_fun
    if len(ft) >= 4 and ft[0:4] == 'date':
        default_value = 'new DateTime()'
        convert_fun = 'ToDateTime'
        return default_value, convert_fun
    if len(ft) >= 7 and ft[0:7] == 'decimal':
        default_value = '0.0m'
        convert_fun = 'ToDecimal'
        return default_value, convert_fun
    return '', ''


def value_type(ft):
    if len(ft) >= 3 and ft[0:3] == 'int':
        default_value = '0'
        convert_fun = 'int'
        return default_value, convert_fun
    if len(ft) >= 7 and ft[0:7] == 'varchar':
        default_value = 'string.Empty'
        convert_fun = 'string'
        return default_value, convert_fun
    if len(ft) >= 4 and ft[0:4] == 'char':
        default_value = 'string.Empty'
        convert_fun = 'string'
        return default_value, convert_fun
    if len(ft) >= 7 and ft[0:7] == 'tinyint':
        default_value = '0'
        convert_fun = 'int'
        return default_value, convert_fun
    if len(ft) >= 4 and ft[0:4] == 'date':
        default_value = 'new DateTime()'
        convert_fun = 'DateTime'
        return default_value, convert_fun
    if len(ft) >= 7 and ft[0:7] == 'decimal':
        default_value = '0.0m'
        convert_fun = 'decimal'
        return default_value, convert_fun
    return '', ''

format_db(table_to_model)

# format_db(table_to_json)

# format_db(template1)

# format_db(template2)

 

转载于:https://my.oschina.net/raddleoj/blog/909128

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值