Peewee在sqlite而不是mysql中创建表

时间:2017-04-20 14:35:22

标签: mysql python-2.7 peewee

Peewee很新。我在另一个具有类似功能的项目之后对我的代码进行建模。但我遇到的问题是,当我创建表时,会创建一个sqlite DB并在其中创建表。虽然,我正在尝试使用MySQL。

相关代码位:

class MyRetryDB(RetryOperationalError, PooledMySQLDatabase):
    pass

def init_database():
    if args.db_type == 'mysql':
        log.info('Connecting to MySQL database on %s:%i...',
                 args.db_host, args.db_port)
        connections = args.db_max_connections
        db = MyRetryDB(
            args.db_name,
            user=args.db_user,
            password=args.db_pass,
            host=args.db_host,
            port=args.db_port,
            max_connections=connections,
            stale_timeout=300)
        pprint.pprint(vars(db))
        create_tables(db)
    return db

def create_tables(db):
    pprint.pprint(vars(db))
    tables = [Table1, Table2]
    db.connect()
    for table in tables:
        log.info("Creating table: %s", table.__name__)
        db.create_tables([table], safe=True)
    db.close()

我可能会遗漏这件事吗?

1 个答案:

答案 0 :(得分:1)

您需要以这种方式将模型与数据库关联:

class MyTable(Model):
    class Meta:
        database = mysql_db

否则他们将使用默认的sqlite db。