peewee 表生成的时候怎么加统一前缀

来源:7-2 model的定义和表的自动生成

DSMARK

2020-10-24

图片描述这个自动给表加前缀怎么用啊?

写回答

3回答

bobby

2020-11-09

# -*- coding: utf-8 -*-
from datetime import datetime

from peewee import *

db = MySQLDatabase(
    "mxshop_test",
    host="127.0.0.1",
    port=3306,
    user="root",
    password="root"
)


def make_table_name(model_class):
    model_name = model_class.__name__
    return "myprefix_" + model_name.lower()


class BaseModel(Model):
    create_time = DateTimeField(verbose_name="创建时间", default=datetime.now())

    class Meta:
        database = db
        table_function = make_table_name




class User(BaseModel):
    openid = CharField(verbose_name="用户唯一标识", index=True, unique=True)
    nickname = CharField(max_length=20, verbose_name="昵称")
    avatar = CharField(max_length=200, verbose_name="头像", null=True)
    notices = IntegerField(verbose_name="订阅消息次数", default=0)
    login_time = DateTimeField(verbose_name="登录时间")

if __name__ == '__main__':
    db.create_tables([User])

这是你的代码整理了 我这里生成表的时候能加前缀啊

0
2
bobby
回复
DSMARK
你试过我这个代码还是不行? 你也可以在你上面的函数中打个断点 debug试试
2020-11-10
共2条回复

DSMARK

提问者

2020-11-07

user.py

# -*- coding: utf-8 -*-
from peewee import *

from common.models import BaseModel

class User(BaseModel):
    openid = CharField(verbose_name="用户唯一标识",index=True,unique=True)
    nickname = CharField(max_length=20,verbose_name="昵称")
    avatar = CharField(max_length=200,verbose_name="头像",null=True)
    notices = IntegerField(verbose_name="订阅消息次数",default=0)
    login_time = DateTimeField(verbose_name="登录时间")


common.py

# -*- coding: utf-8 -*-
from datetime import datetime

from .settings import settings
from peewee import *

db = MySQLDatabase(
    settings['db']['name'],
    host=settings['db']['host'],
    port=settings['db']['port'],
    user=settings['db']['user'],
    password=settings['db']['pwd']
)


def make_table_name(model_class):
    model_name = model_class.__name__
    return settings['table_prefix'] + model_name.lower()


class BaseModel(Model):
    create_time = DateTimeField(verbose_name="创建时间",default = datetime.now())
    
    class Meta:
        database = db
        table_function = make_table_name


0
0

bobby

2020-10-28

你这里更加这个配置有问题?

0
3
DSMARK
回复
bobby
就是照着网上抄的
2020-11-07
共3条回复

Tornado从入门到进阶 打造支持高并发的技术论坛

异步IO并发编程/Form,ORM/aiomysql、peewee-async/epoll

593 学习 · 350 问题

查看课程