Ill*_*ich 5 python sqlalchemy flask flask-sqlalchemy
我只想用 Flask-sqlalchemy 创建和测试数据库。已成功创建数据库。我的代码:
class Entry(db.Model):
id = db.Column(db.Integer, primary_key=True)
occurences = db.Column(db.String(80), unique=True)
a = Entry('run.py:27')
Run Code Online (Sandbox Code Playgroud)
错误:
a = Entry('run.py:27')
TypeError: __init__() takes 1 positional argument but 2 were given
Run Code Online (Sandbox Code Playgroud)
如果我尝试在没有参数的情况下执行此操作,程序将返回:
qlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such table: entry [SQL: 'INSERT INTO entry (occurences) VALUES (?)'] [parameters: (None,)]
Run Code Online (Sandbox Code Playgroud)
错误开始于
db.session.commit()
Run Code Online (Sandbox Code Playgroud)
根据他们的文档:
SQLAlchemy 向所有模型类添加了一个隐式构造函数,它接受所有列和关系的关键字参数。如果您出于任何原因决定覆盖构造函数,请确保继续接受 **kwargs 并使用这些 **kwargs 调用超级构造函数以保留此行为...
这意味着您的代码失败,因为构造函数需要关键字参数。您可以通过以下方式修复它:
# instantiating Entry with the occurences keyword
a = Entry(occurences='run.py:27')
Run Code Online (Sandbox Code Playgroud)
或覆盖__init__... 在这种情况下,您还应该包括 a**kwargs和对 super 的调用。
您必须定义__init__支持模型字段的方法:
class Entry(db.Model):
id = db.Column(db.Integer, primary_key=True)
occurences = db.Column(db.String(80), unique=True)
def __init__(self, occurences):
self.occurences = occurences
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1876 次 |
| 最近记录: |