2014-12-17 14 views
5

Sono nuovo su Python, ho appena imparato a creare un'API usando la beuta inquieta e la fiaschetta sql-alchemy. Tuttavia, vorrei seminare il database con valori casuali. Come ottengo questo? Per favore aiuto. Ecco il codice api ...Come faccio a seminare un database di sql-alchemy per i flaconi

import flask 
import flask.ext.sqlalchemy 
import flask.ext.restless 
import datetime 

DATABASE = 'sqlite:///tmp/test.db' 

#Create the Flask application and the FLask-SQLALchemy object 
app = flask.Flask(__name__) 
app.config ['DEBUG'] = True 
app.config['SQLALCHEMY_DATABASE_URI'] = DATABASE 
db = flask.ext.sqlalchemy.SQLAlchemy(app) 

#create Flask-SQLAlchemy models 
class TodoItem(db.Model): 
    id = db.Column(db.Integer, primary_key = True) 
    todo = db.Column(db.Unicode) 
    priority = db.Column(db.SmallInteger) 
    due_date = db.Column(db.Date) 

#Create database tables 
db.create_all() 

#Create Flask restless api manager 
manager = flask.ext.restless.APIManager(app, flask_sqlalchemy_db = db) 

#Create api end points 
manager.create_api(TodoItem, methods = ['GET','POST','DELETE','PUT'], results_per_page = 20) 

#Start flask loop 
app.run() 
+0

Guarda questo http://stackoverflow.com/questions/19334604/creating-seed-data-in-a-flask-migrate-or-alembic-migration – Nenodias

risposta

0

Da un altro newbie, le librerie e forgerypy forgerypy3 sono disponibili per questo scopo (anche se sembrano non sono stati toccati in un po ').

Un semplice esempio di come utilizzarli aggiungendoli al vostro modello:

class TodoItem(db.Model): 

    .... 

    @staticmethod 
    def generate_fake_data(records=10): 
     import forgery_py 
     from random import randint 
     for record in records: 
      todo = TodoItem(todo=forgery_py.lorem_ipsum.word(), 
          due_date=forgery_py.date.date(), 
          priority=randint(1,4)) 
      db.session.add(todo) 
     try: 
      db.session.commit() 
     except: 
      db.session.rollback() 

Si potrebbe quindi chiamare il metodo generate_fake_data in una sessione di shell.

E il blog Web di Miguel Grinberg (il libro O'Reilly, non il blog) capitolo 11 è una buona risorsa per questo.

+1

I puntatori a un libro non rispondono veramente alla domanda, – swa66

+0

Si, sono d'accordo. L'avrei aggiunto come commento ma non ho abbastanza punti (anche se sono autorizzato a commentare la mia risposta). Totalmente disposto a rimuoverlo per conformarsi al formato di overflow dello stack se lo consigli. Stavo cercando la stessa cosa, e ho trovato solo questa domanda. –

Problemi correlati