gpt4 book ai didi

python - peewee外键错误

转载 作者:行者123 更新时间:2023-11-29 01:56:27 25 4
gpt4 key购买 nike

我正在尝试使用 peewee 为我现有的数据库创建一个简单的模型。

我正在处理的数据库在 this paper 中有描述.

我已经使用 pwiz 生成了一个模型,它工作正常,但是它没有为我创建启用连接的外键。因此,我编辑了模型,使其看起来像这样:

from peewee import *

database = MySQLDatabase('enron', **{'password': '...', 'user': 'root'})


class UnknownField(object):
pass


class BaseModel(Model):
class Meta:
database = database


class Employee(BaseModel):
email = CharField(db_column='Email_id', unique=True)
eid = PrimaryKeyField()
class Meta:
db_table = 'employeelist'


class Message(BaseModel):
mid = PrimaryKeyField()
sender = ForeignKeyField(Employee,
related_name='messages',
to_field='email') # was CharField() before my edit

class Meta:
db_table = 'message'

但是当我尝试运行时:

for message in Message.select():
print message.mid

我得到一个错误:

Traceback (most recent call last):
File "DBModelEnron.py", line 62, in <module>
for message in Message.select():
File "/usr/local/lib/python2.7/dist-packages/peewee.py", line 2514, in __iter__
return iter(self.execute())
File "/usr/local/lib/python2.7/dist-packages/peewee.py", line 2507, in execute
self._qr = ResultWrapper(model_class, self._execute(), query_meta)
File "/usr/local/lib/python2.7/dist-packages/peewee.py", line 2203, in _execute
return self.database.execute_sql(sql, params, self.require_commit)
File "/usr/local/lib/python2.7/dist-packages/peewee.py", line 2833, in execute_sql
self.commit()
File "/usr/local/lib/python2.7/dist-packages/peewee.py", line 2688, in __exit__
reraise(new_type, new_type(*exc_value.args), traceback)
File "/usr/local/lib/python2.7/dist-packages/peewee.py", line 2825, in execute_sql
cursor.execute(sql, params or ())
File "/usr/lib/python2.7/dist-packages/MySQLdb/cursors.py", line 174, in execute
self.errorhandler(self, exc, value)
File "/usr/lib/python2.7/dist-packages/MySQLdb/connections.py", line 36, in defaulterrorhandler
raise errorclass, errorvalue
peewee.OperationalError: (1054, "Unknown column 't1.sender_id' in 'field list'")

我发现了类似的问题here ,但是我定义了一个正确的 PrimaryKey。

最佳答案

只需将 db_column='' 添加到您的外键即可:

sender = ForeignKeyField(Employee,
db_column='sender', # Added this.
related_name='messages',
to_field='email') # was CharField() before my edit

关于python - peewee外键错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27659113/

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