2009-11-02 6 views
0

sqlalchemy 및 pylons를 사용하여 간단한 하이쿠 사이트를 만들었습니다. 기본적으로 하이쿠를 취하여 데이터베이스에 쓰고 하이쿠를 표시합니다. 문제는 양식에서 데이터를 가져 와서 데이터베이스에 쓰려고 할 때 나타납니다. Pylons가 다음과 같은 오류를 표시합니다. AttributeError : 'tuple'객체에이 코드 행을 실행 한 후에 'insert'속성이 없습니다. ins = self. haiku_table.insert (값 = form_dict)sqlalchemy : AttributeError : 'tuple'객체에 'insert'속성이 없습니다.

홈페이지 번호 :

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 

및 메타 파일에 대한 코드 :

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) 

어떤 아이디어? 당신이 haiku_table를 생성하고 분명

이 때를 같이 보이는 튜플의 일부가 아닌를 취소하려면 기능을 사용하기 전에 그것을 다른 아무것도 안하고있는 것처럼 내가 단서를

답변

1

음이 없다, 그것은 본다 당신은뿐만 아니라 sqlachlemy 모듈에서 Table를 가져와야합니다

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

: SQLAlchemy의있는 테이블을 작성, 당신은 형식을합니다.

이렇게하면 haiku_table이 단순히 튜플이 아닌 SQLAlchemy의 Table 인스턴스가됩니다. 그게 전부 네가 놓친 것 같아.

+0

죄송합니다. 당신이 옳다고 생각합니다. – Joshkunz

+0

캔트가 그 덕택을 놓쳤다 고 생각합니다!, btw 테이블은 스키마의 일부이므로 스키마. 테이블 – Joshkunz

관련 문제