2009-09-02 14 views
1

Je suis un noob et j'essaie de comprendre TG2 et SQLAlchemy. Le problème spécifique que je suis en train de résoudre est de savoir comment insérer une nouvelle ligne dans une table lorsque le champ PK est configuré comme auto-incrémenté.TurboGears2/SQLAlchemy: Insertion d'une nouvelle ligne dans une table avec un auto-incrément Clé primaire

Par exemple:

dans mon fichier myproject.model.myproject.py je défini le tableau suivant:

class Dj(DeclarativeBase): 
    __tablename__ = 'djs' 

    #{ Columns 

    djID = Column(Integer, autoincrement=True, primary_key=True) 
    djname = Column(String) 
    djwebpage = Column(String) 
    #} 

Dans mon fichier websetup.py je le remplir avec des données initiales. Étant donné que c'est la première ligne de données, je triché et juste défini le Djid être « 1 »

dj = model.Dj("1", "DJ Anonymous", "http://www.djanonymous.com") 

Si je voulais le websetup.py pour créer une deuxième ligne dans la table de djs (via l'objet Dj) comment est-ce que je ferais ça?

J'ai déjà essayé un certain nombre de choses différentes et n'ai pas eu de chance. Par exemple Si j'ai utilisé le même format mais que j'ai seulement inclus 2 chaînes (pour les colonnes djname et djwebpage), j'obtiens une erreur en me plaignant que je ne lui ai pas donné assez d'arguments. Bien sûr, en fin de compte, j'ai besoin de comprendre comment créer un contrôleur pour me permettre d'insérer de nouvelles entrées dans la table ... mais je vais prendre mon apprentissage une étape à la fois et être reconnaissant juste pour réussir pré-remplir la table avec plusieurs lignes via le fichier websetup.py. J'espère que cela me donnera les indices pour me permettre de passer à l'étape suivante.

Merci d'avance!

Répondre

1

Eh bien votre problème est simplement (je suis impressionné, il est resté sans réponse pendant si longtemps :).

  • D'abord pourquoi nommez-vous votre colonne "djID"? pourquoi pas juste id?
  • Deuxièmement vous ne pas insérer dans lui, c'est pourquoi c'est auto-incrémenté.
  • Troisième le tutoriel SA first basic explique cela