flask-SQLAlchemy 在 query 时候的问题

2015-01-21 11:46:38 +08:00
 happywowwow
print (type(Archive.query.filter_by))
print (type(Archive.query.filter_by(archive_name='aaa')))
print (Archive.query.filter_by(archive_name='aaa'))
print (type(Archive.query.filter_by(archive_name='aaa').first))
print (type(Archive.query.filter_by(archive_name='aaa').first()))
<type 'instancemethod'>
<class 'flask_sqlalchemy.BaseQuery'>
SELECT flask_archive.id AS flask_archive_id, flask_archive.archive_name AS flask_archive_archive_name 
FROM flask_archive 
WHERE flask_archive.archive_name = :archive_name_1
<type 'instancemethod'>

最后一个没有输出,也没有错误提示就退出了。pdb调试 出现
"The program exited via sys.exit(). Exit status: -9"

  1. 直接在 python 互式里面,可以 query
  2. 写份脚本也可以
  3. 现在怀疑原因是项目里面循环 import 了什么包

引用关系,
主app 在myapp.py

from flask import Flask
app = Flask(__name__)
app.config.from_object('config')
from views import *
if '__main__' == __name__:
□□□□app.debug = True
□□□□app.run()

views.py

from models import Archive, Tag, Comment, Post, db
@app.route('/blabla')
def index():
□□□□print (type(Archive.query.filter_by))
□□□□print (type(Archive.query.filter_by(archive_name='aaa')))
□□□□print (Archive.query.filter_by(archive_name='aaa'))
□□□□print (type(Archive.query.filter_by(archive_name='aaa').first))
□□□□print (type(Archive.query.filter_by(archive_name='aaa').first()))
□□□□a = Archive.query.filter_by(archive_name='aaa').first()
□□□□return "Hello world"

models.py

from myapp import app
from flask.ext.sqlalchemy import SQLAlchemy, BaseQuery
db = SQLAlchemy(app)
class Archive(db.Model):
□□□□pass
class Tag(db.Model):
□□□□pass

以上代码简化了的

4153 次点击
所在节点    问与答
5 条回复
wuyu1998
2015-01-21 11:53:35 +08:00
将所以的from xxx import *改为import xxx
wuyu1998
2015-01-21 11:55:36 +08:00
views.py

from models import Archive, Tag, Comment, Post, db
@app.route('/blabla')
def index():
□□□□q = Archive.query.filter_by(archive_name='aaa')
□□□□print ('q: {0}'.format(q))
□□□□obj = q.first()
□□□□print ('obj: {0}'.format(obj))
□□□□return "Hello world"
wuyu1998
2015-01-21 11:58:10 +08:00
删除myapp.py中的
from views import *
wuyu1998
2015-01-21 12:00:18 +08:00
最关键的问题,models.py中没有建立字段,无法和数据库的表建立映射关系。
class Archive(db.Model):
□□□□pass
happywowwow
2015-01-21 13:59:47 +08:00
@wuyu1998
1.删除myapp.py中的
from views import * 那这不是什么没了?

2. □□□□pass 我完整代码没贴上来而已。。。其实是有的。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/164084

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX