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)