示例#1
0
def createTable(Model, db_name, user=None, password=None, host='127.0.0.1'):
    '''
    create by bigzhu at 15/04/04 01:08:30 建立数据库表; peewee 要在定义时候指定 db 相当不人性化,修正
    modify by bigzhu at 15/04/04 01:32:46 没有这个数据库的时候,直接返回建立数据的语句
    modify by bigzhu at 15/04/04 01:45:43 如果表已经存在,不能往下继续了
    '''
    if user is None:
        user = db_name
    if password is None:
        password = db_name
    if host is None:
        host = '127.0.0.1'

    #db = PostgresqlExtDatabase(db_name, user=user, password=password, host='127.0.0.1', register_hstore=False)
    db = PostgresqlExtDatabase(db_name, user=user, password=password, host=host, register_hstore=False)
    Model._meta.database = db
    try:
        if Model.table_exists():
            print 'table %s already exists' % Model.__name__
            return
        createBaseTable(db)
        Model.create_table()
        print 'create table ' + Model.__name__
    except peewee.OperationalError:
        print public_bz.getExpInfo()
        showDBCreate(db_name)
        exit(1)

    table_name = Model.__name__
    if table_name != 'base':
        sql = '''
            alter table %s inherit base;
            ''' % table_name
        db.execute_sql(sql)
        resetBaseDefault(db)
        # add table comment
        comment = Model.__doc__
        sql = '''
            COMMENT ON TABLE %s IS '%s';
        ''' % (table_name, comment)
        db.execute_sql(sql)