首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sqlalchemy: AttributeError:'tuple‘对象没有'insert’属性

sqlalchemy: AttributeError:'tuple‘对象没有'insert’属性
EN

Stack Overflow用户
提问于 2009-11-02 10:23:30
回答 1查看 5K关注 0票数 0

我使用sqlalchemy和塔架制作了一个简单的haiku站点。它基本上就是取一个haiku,把它写到一个数据库中,然后显示haiku。当我从表单中获取数据并尝试将其写入数据库时,出现了这个问题: AttributeError:'tuple‘对象在我运行下面这行代码后没有'insert’属性: ins = self.haiku_table.insert(values=form_dict)

主代码:

代码语言:javascript
复制
import logging

from pylons import request, response, session, tmpl_context as c
from pylons.controllers.util import abort, redirect_to

from myku.lib.base import BaseController, render
from sqlalchemy.sql import select
import meta
import myku.lib.helpers as h

log = logging.getLogger(__name__)

class IndexController(BaseController):
    def __init__(self):
        self.haiku_table = meta.haiku_table
        self.conn = meta.engine.connect()
        BaseController.__init__(self)

    def index(self, genre, title):
        ss = select([self.haiku_table], self.haiku_table.c.genre==str(genre).lower(),  self.haiku_table.c.title==str(title).lower())
       result = self.conn.execute(ss)
       return result

    def new_haiku(self):
       return render('/newku.html')

    def submit(self):
        title = request.params.get('title')
        haiku = request.params.get('haiku')
        genre = request.params.get('genre')
        author = request.params.get('author')
        form_dict = {'title': title, 'haiku': haiku, 'genre': genre, 'author': author}
        ins = self.haiku_table.insert(values=form_dict)
        result = self.conn.execute(ins)
        return res

以及元文件的代码:

代码语言:javascript
复制
from sqlalchemy.engine import create_engine
from sqlalchemy import schema, types

metadata = schema.MetaData()

haiku_table = ('haiku', metadata,
               schema.Column('title', types.Text(), primary_key=True),
               schema.Column('haiku', types.Text()),
               schema.Column('genre', types.Text()),
               schema.Column('author', types.Text())
               )

engine = create_engine('sqlite:///F:\\MyKu\\myku\\haiku')
metadata.bind = engine

metadata.create_all(checkfirst=True)

有什么想法吗?毫无线索

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-11-02 10:30:29

在尝试使用显然不是元组一部分的.insert函数之前,看起来您正在创建haiku_table,并且没有对它做任何其他操作

看起来,当您使用SQLAlchemy创建表时,您需要以下格式:

代码语言:javascript
复制
haiku_table = Table('haiku', metadata,
           schema.Column('title', types.Text(), primary_key=True),
           .... etc
           )

您还需要从sqlachlemy模块导入Table

这使得haiku_table成为SQLAlchemy的一个表实例,而不仅仅是一个元组。我想这就是你所错过的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1659160

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档