문제

저는 sqlalchemy와 pylons를 사용하여 간단한 하이쿠 사이트를 만들면서 놀고 있었습니다.기본적으로 하이쿠를 가져와서 데이터베이스에 쓰고 하이쿠를 표시합니다.양식에서 데이터를 가져와서 데이터베이스에 쓰려고 하면 문제가 나타납니다. Pylons에서는 다음 오류가 발생합니다.속성오류:다음 코드 줄을 실행한 후에는 'tuple' 개체에 'insert' 속성이 없습니다.ins = self.haiku_table.insert(values=form_dict)

주요 코드:

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 분명히 튜플의 일부가 아닌 .insert 함수를 사용하려고 시도하기 전에 다른 작업을 수행하지 않습니다.

SQLAlchemy를 사용하여 테이블을 생성할 때 다음 형식을 원하는 것 같습니다.

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

수입해야 할 것입니다. Table sqlachlemy 모듈에서도 마찬가지입니다.

이로 인해 haiku_table은 단순한 튜플이 아닌 SQLAlchemy의 테이블 인스턴스가 됩니다.내 생각엔 그게 네가 부족한 전부인 것 같아.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top