Frage

Ich spielte um eine einfache Haiku Website machen sqlalchemy und Masten verwenden. Es dauert im Grunde ein Haiku, schreibt sie in einer Datenbank und zeigt das Haiku. Das Problem erscheint, wenn ich die Daten aus dem Formular erhalten und versuche, es in eine Datenbank zu schreiben, geben Pylons mir diesen Fehler: Attribute: ‚tuple‘ Objekt hat kein Attribut ‚Einfügen‘, nachdem ich diese Codezeile ausgeführt wird: In = Selbst. haiku_table.insert (Wert = form_dict)

Haupt Code:

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

und der Code für die Meta-Datei:

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)

Irgendwelche Ideen? Ich habe keine Ahnung

War es hilfreich?

Lösung

Nun, es sieht aus wie Sie haiku_table sind das Erstellen und nichts anderes zu tun es, bevor Sie die .Insert Funktion zu verwenden, die offensichtlich nicht Teil eines Tupels

Sieht aus wie wenn Sie eine Tabelle mit SQLAlchemy erstellen, möchten Sie das Format:

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

Sie müssen auch Table vom sqlachlemy Modul importieren.

Das macht haiku_table eine Tabelle Instanz von SQLAlchemy sein und nicht nur ein Tupel. Ich denke, das ist alles, was Sie fehlt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top