我正在尝试使用Python 2.7和flask框架将数据库的纬度,经度,消息和日期/时间插入到Web表单中。不幸的是,它没有正确存储在数据库中,我变得疯狂,因为我在代码中找不到bug。
有这个:
from datetime import datetime
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config.from_pyfile('conf.cfg')
db = SQLAlchemy(app)
# create DB structure
class Sprava(db.Model):
__tablename__ = 'spravy'
id = db.Column('spravy_id', db.Integer, primary_key=True)
lat = db.Column(db.Float)
lon = db.Column(db.Float)
text = db.Column(db.String)
pub_date = db.Column(db.DateTime)
def __init__(self, lat, lon, text):
self.lat = lat
self.lat = lon
self.text = text
self.pub_date = datetime.utcnow()
@app.route('/')
@app.route('/hello')
# index page
def index():
return 'Hello sledovanie'
if __name__ == '__main__':
app.run()
# web form
from flask import Flask, request, flash, url_for, redirect, render_template, abort
@app.route('/sledovanie', methods=['GET', 'POST'])
def new():
if request.method == 'POST':
sprava = Sprava(request.form['lat'], request.form['lon'], request.form['text'])
db.session.add(sprava)
db.session.commit()
return redirect(url_for('index'))
return render_template('sledovanie.html')
当我使用这段简单的代码填写网络表单或调试时:
z = Sprava('1', '2', 'text_i')
db.session.add(z)
db.session.commit()
它无法正确地将它传送到DB(psql_9.2)。这是存储在数据库中的内容:
spravy_id | lat | lon | text | pub_date
-----------+-----+-----+--------+----------------------------
1 | 2 | | text_i | 2014-08-03 17:02:43.829942
我没关系 lat是lon lon失踪了 文字确定 日期确定
你能看出我做错了吗?
答案 0 :(得分:0)
您的__init__
有拼写错误。
self.lat = lat
self.lat = lon
你看到上面的问题了吗?此外,由于这个错字,你根本没有设置self.lan
。
显然,这可能是一个错字,你知道修复。但为了以防万一,你需要做
def __init__(self, lat, lon, text):
self.lat = lat
self.lon = lon
self.text = text
self.pub_date = datetime.utcnow()