gpt4 book ai didi

python - Peewee KeyError : 'i'

转载 作者:太空狗 更新时间:2023-10-30 02:03:32 25 4
gpt4 key购买 nike

我从 Python 的 peewee 模块中收到一个我无法解决的奇怪错误,有什么想法吗?我基本上想要包含多个公司的“批处理”。我正在为每个批处理创建一个批处理实例,并将其中的所有公司分配给该批处理的行 ID。

回溯

Traceback (most recent call last):
File "app.py", line 16, in <module>
import models
File "/Users/wyssuser/Desktop/dscraper/models.py", line 10, in <module>
class Batch(Model):
File "/Library/Python/2.7/site-packages/peewee.py", line 3647, in __new__
cls._meta.prepared()
File "/Library/Python/2.7/site-packages/peewee.py", line 3497, in prepared
field = self.fields[item.lstrip('-')]
KeyError: 'i'

模型.py

from datetime import datetime

from flask.ext.bcrypt import generate_password_hash
from flask.ext.login import UserMixin

from peewee import *

DATABASE = SqliteDatabase('engineering.db')

class Batch(Model):
initial_contact_date = DateTimeField(formats="%m-%d-%Y")

class Meta:
database = DATABASE
order_by = ('initial_contact_date')

@classmethod
def create_batch(cls, initial_contact_date):
try:
with DATABASE.transaction():
cls.create(
initial_contact_date=datetime.now
)
print 'Created batch!'
except IntegrityError:
print 'Whoops, there was an error!'


class Company(Model):
batch_id = ForeignKeyField(rel_model=Batch, related_name='companies')
company_name = CharField()
website = CharField(unique=True)
email_address = CharField()
scraped_on = DateTimeField(formats="%m-%d-%Y")
have_contacted = BooleanField(default=False)
current_pipeline_phase = IntegerField(default=0)

day_0_message_id = IntegerField()
day_0_response = IntegerField()
day_0_sent = DateTimeField()

day_5_message_id = IntegerField()
day_5_response = IntegerField()
day_5_sent = DateTimeField()

day_35_message_id = IntegerField()
day_35_response = IntegerField()
day_35_sent = DateTimeField()

day_125_message_id = IntegerField()
day_125_response = IntegerField()
day_125_sent = DateTimeField()

sector = CharField()

class Meta:
database = DATABASE
order_by = ('have_contacted', 'current_pipeline_phase')

@classmethod
def create_company(cls, company_name, website, email_address):
try:
with DATABASE.transaction():
cls.create(company_name=company_name, website=website, email_address=email_address, scraped_on=datetime.now)
print 'Saved {}'.format(company_name)
except IntegrityError:
print '{} already exists in the database'.format(company_name)


def initialize():
DATABASE.connect()
DATABASE.create_tables([Batch, Company, User],safe=True)
DATABASE.close()

最佳答案

问题出在您的 Batch 类的元数据中。参见 peewee 的 example使用 order_by 的地方:

class User(BaseModel):
username = CharField(unique=True)
password = CharField()
email = CharField()
join_date = DateTimeField()

class Meta:
order_by = ('username',)

其中 order_by 是一个仅包含用户名的元组。在您的示例中,您省略了使它成为常规字符串而不是元组的逗号。这将是您那部分代码的正确版本:

class Batch(Model):
initial_contact_date = DateTimeField(formats="%m-%d-%Y")

class Meta:
database = DATABASE
order_by = ('initial_contact_date',)

关于python - Peewee KeyError : 'i' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30866058/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com