2014-12-17 7 views
5

Jestem nowy w Pythonie, nauczyłem się jak tworzyć api za pomocą kolb niespokojnych i kolb sql-alchemy. Chciałbym jednak zasiać bazę danych losowymi wartościami. Jak to osiągnąć? Proszę pomóż. Oto kod api ...Jak zasiewać bazę danych z alikwoterem sql-alchemy

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

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

Odpowiedz

0

Z innego nowicjusza, biblioteki forgerypy i forgerypy3 są dostępne do tego celu (choć wyglądają tak, jakby nie zostały dotknął w kawałku).

Prostym przykładem tego, jak je wykorzystać, dodając je do modelu:

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() 

Można by następnie wywołać metodę generate_fake_data w sesji powłoki.

A rozwój gry Flask Web Development autorstwa Miguela Grinberga (książka O'Reilly, a nie blog) rozdział 11 jest dobrym źródłem informacji.

+1

Wskazówki do książki nie odpowiadają na pytanie, – swa66

+0

Tak, zgadzam się. Dodałbym to jako komentarz, ale nie mam wystarczającej liczby punktów (chociaż mam prawo komentować moją własną odpowiedź). Całkowicie chętny do usunięcia go, aby pasował do formatu przepełnienia stosu, jeśli to zrobisz. Szukałem tego samego i znalazłem tylko to pytanie. –

Powiązane problemy