Sqlalchemy: estributeError: "Tuple" كائن ليس لديه سمة "إدراج"
-
11-09-2019 - |
سؤال
كنت ألعب حول جعل موقع Haiku بسيط باستخدام Sqlalchemy و Pylons. يأخذ أساسا haiku، يكتبه إلى قاعدة بيانات، ويعرض هايكو. تظهر المشكلة عندما أحصل على البيانات من النموذج وحاول كتابةها إلى قاعدة بيانات، أعطني الأبراج هذا الخطأ: estrabilterror: "Tuple" لا يوجد لديه سمة "إدراج" بعد تشغيل هذا الرمز: INS = الذات. haiku_table.insert (القيم = 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
وكود ملف meta:
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
وعدم القيام بأي شيء آخر قبل محاولة استخدام وظيفة .ينست التي من الواضح أنها ليست جزءا من tuple
يبدو أنه عند إنشاء جدول مع SQLAlchemy، فأنت تريد التنسيق:
haiku_table = Table('haiku', metadata,
schema.Column('title', types.Text(), primary_key=True),
.... etc
)
سوف تحتاج إلى استيراد Table
من وحدة sqlachlemy كذلك.
هذا يجعل HAIKU_TABLE كن مثيل جدول Sqlalchemy وليس ببساطة Tuple. أعتقد أن هذا كل ما في عداد المفقودين.