2017-07-17 56 views
-1

我想插入数据到烧瓶postgresql数据库。如何插入数据到postgresql数据库与瓶 - sqlalchemy.exc.ProgrammingError?

这是我写的模型类代码。

class Bet365(db.Model): 
    __tablename__ = "bet365s" 
    id = db.Column(db.Integer, primary_key=True) 
    sports = db.Column(db.Float) 
    casino = db.Column(db.Float) 
    poker = db.Column(db.Float) 
    games_bingo = db.Column(db.Float) 
    total = db.Column(db.Float) 
    withdrawal = db.Column(db.Float) 
    balance = db.Column(db.Float) 

    def __init__(self, sports, casino, poker, games_bingo, total, withdrawal, balance): 
     self.id = id 
     self.sports = sports 
     self.casino = casino 
     self.poker = poker 
     self.games_bingo = games_bingo 
     self.total = total 
     self.withdrawal = withdrawal 
     self.balance = balance 

这是代码段,其负责插入数据。

@app.route('/testing/') 
def testing(): 
    data_bet365 = bet365_scrapping() 

    sports = float(data_bet365[0]) 
    casino = float(data_bet365[1]) 
    poker = float(data_bet365[2]) 
    games_bingo = float(data_bet365[3]) 
    total = float(data_bet365[4]) 
    withdrawal = float(data_bet365[5]) 
    balance = float(data_bet365[6]) 

    result_bet365 = Bet365(sports, casino, poker, games_bingo, total, withdrawal, balance) 
    db.session.add(result_bet365) 
    db.session.commit() 
    return (jsonify(data_bet365)) 

当我运行这个脚本时,出现这样的错误。

sqlalchemy.exc.ProgrammingError 

sqlalchemy.exc.ProgrammingError: (psycopg2.ProgrammingError) can't adapt type 'builtin_function_or_method' 
[SQL: 'INSERT INTO bet365s (id, sports, casino, poker, games_bingo, total, withdrawal, balance) VALUES (%(id)s, %(sports)s, %(casino)s, %(poker)s, %(games_bingo)s, %(total)s, %(withdrawal)s, %(balance)s)'] 
[parameters: {'withdrawal': 0.0, 'id': <built-in function id>, 'sports': -29.94, 'total': 593.75, 'casino': 464.22, 'poker': 14.29, 'games_bingo': 145.17, 'balance': 593.75}] 

我找不到解决方案。请帮帮我。

回答

0

我不会使用id作为类属性名称。您正在初始化程序中将id全局函数分配给self.id,这是引起追溯的原因。

0

看起来问题在于您的列类型。你正在尝试将一个浮点数插入Integer列。

+0

感谢您的回复。请再看一遍。我已经更新了我的问题。对不起,打扰你。 –

+0

啊,它看起来像你试图插入一个空值到ID列。哪个应该是自动生成的字段。 –