为了账号安全,请及时绑定邮箱和手机立即绑定

使用flask-sqlalchemy可以插入数据到mysql但是无法读取数据。

使用flask-sqlalchemy可以插入数据到mysql但是无法读取数据。

繁花如伊 2019-02-21 12:27:33
我写的demo程序 from flask import Flask from flask.ext.sqlalchemy import SQLAlchemy from flask.ext.script import Manager,Shell app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:123456@127.0.0.1/hello' #app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///' + os.path.join(basedir,'data.sqlite') manager = Manager(app) db = SQLAlchemy(app) 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 def make_shell_context(): return dict(app=app,db=db,User=User) manager.add_command('shell',Shell(make_context=make_shell_context)) if __name__ == '__main__': manager.run() 可以再mysql插入数据,插入之前: mysql> select * from users; +------+-------------+---------+ | id | username | role_id | +------+-------------+---------+ | NULL | yzxu | NULL | | NULL | dayiguizhen | NULL | | NULL | yzxu | NULL | | NULL | yzxu | NULL | | NULL | yzxu | NULL | | NULL | yzxu | NULL | | NULL | yzxu | NULL | | NULL | yzxu | NULL | | NULL | yzxu | NULL | | NULL | yzxu | NULL | | NULL | yzxu | NULL | | NULL | yzxu | NULL | | NULL | test | NULL | +------+-------------+---------+ 13 rows in set (0.00 sec) yzxu@ubuntu:~/py/github$ python sql.py shell >>> user = User(username='after') >>> db.session.add(user) >>> db.session.commit() 插入成功: mysql> select * from users; +------+-------------+---------+ | id | username | role_id | +------+-------------+---------+ | NULL | yzxu | NULL | | NULL | dayiguizhen | NULL | | NULL | yzxu | NULL | | NULL | yzxu | NULL | | NULL | yzxu | NULL | | NULL | yzxu | NULL | | NULL | yzxu | NULL | | NULL | yzxu | NULL | | NULL | yzxu | NULL | | NULL | yzxu | NULL | | NULL | yzxu | NULL | | NULL | yzxu | NULL | | NULL | test | NULL | | NULL | after | NULL | +------+-------------+---------+ 14 rows in set (0.00 sec) 但是查询不到东西 >>> User.query.filter_by(username='after').all() [None] 但是把URI换成SQLite的就可以查询到 >>> db.create_all() >>> u = User(username='yzxu') >>> db.session.add(u) >>> db.session.commit() >>> User.query.all() [<User u'yzxu'>] >>> quit() 是不是把URI换成mysql还有进行一些其他的操作?
查看完整描述

1 回答

?
梦里花落0921

TA贡献1772条经验 获得超6个赞

我知道问题出在哪了。
这个users表是我在数据库手动创建的,所以忘记吧id设为主键。如果使用ORM的create_all()方法创建,就可以创建正确的表了。

查看完整回答
反对 回复 2019-03-01
  • 1 回答
  • 0 关注
  • 622 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信