当我使用SQLAlchemy查询以下模型时,我没有得到预期的结果。
class User(db.Model):
__tablename__ = 'users'
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(64), unique=True)
def __repr__(self):
return '<User %r>' % self.username
我直接创建了MySQL表,然后提交了一些数据:
mysql> CREATE TABLE "users" (id INTEGER, username VARCHAR(64));
mysql> select * from users;
+------+-------------+---------+
| id | username | role_id |
+------+-------------+---------+
| NULL | yzxu | NULL |
| NULL | after | NULL |
+------+-------------+---------+
使用MySQL时,SQLAlchemy查询返回None
。
>>> User.query.filter_by(username='after').all()
[None]
使用SQLite时,会返回正确的用户名。
>>> db.create_all()
>>> db.session.add(User(username='after'))
>>> db.session.commit()
>>> User.query.filter_by(username='after').all()
[<User u'after'>]
答案 0 :(得分:0)
MySQL表是我手动创建的,没有SQLAlchemy。它缺少id
上的主键设置。