使用MySQL与SQLite时,查询返回不同的数据

时间:2015-06-01 03:45:40

标签: python flask sqlalchemy

当我使用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'>]

1 个答案:

答案 0 :(得分:0)

MySQL表是我手动创建的,没有SQLAlchemy。它缺少id上的主键设置。