2010-06-19 95 views
0

我按照這篇文章:here從mysql更新數據到gae localhost服務器。如何從MySQL更新數據到gae localhost服務器

這是我str_loader.py是:

class College(db.Model): 
    cid = db.StringProperty(required=True) 
    name = db.StringProperty(required=True) 

class MySQLLoader(bulkloader.Loader): 
    def generate_records(self, filename): 
     """Generates records from a MySQL database.""" 
     conn = MySQLdb.connect(host='localhost',user='root',passwd='root',db='test',charset="utf8") 
     cursor = conn.cursor() 
     sql ="select * from haha" 
     cursor.execute(sql) 
     #alldata = cursor.fetchall() 
     return iter(cursor.fetchone, None) 

class Mysql_update(bulkloader.Loader): 
    def __init__(self): 
     MySQLLoader.__init__(self,'College', 
            [ 
            ('cid', str), 
            ('name', lambda x: unicode(x, 'utf8')), 
            ]) 
            ]) 

loaders = [Mysql_update] 

,我用這個代碼來運行:

appcfg.py upload_data --application=zjm1126 --config_file=upload/str_loader.py --filename=b.csv --kind=College --url=http://localhost:8100/remote_api 

但它顯示錯誤:

alt text http://omploader.org/vNG9sZQ

,所以我更改str_loader.py:

class Mysql_update(bulkloader.Loader): 
    def __init__(self): 
     MySQLLoader('College', 
            [ 
            ('cid', str), 
            ('name', lambda x: unicode(x, 'utf8')), 
            ]) 

,它表明這個錯誤:

alt text http://omploader.org/vNG9sZg

,所以我想知道:我應該怎麼做,

感謝

更新

它是確定現在:

class MySQLLoader(bulkloader.Loader): 
    def generate_records(self, filename): 
     """Generates records from a MySQL database.""" 
     conn = MySQLdb.connect(host='localhost',user='root',passwd='root',db='test',charset="utf8") 
     cursor = conn.cursor() 
     sql ="select * from haha" 
     cursor.execute(sql) 
     rs = cursor.fetchall() 
     #return iter(cursor.fetchone, None) 
     for x in rs: 
      yield (x[0].encode('utf8'),x[1].encode('utf8')) 

回答

0

您的Mysql_update類需要繼承MySQLLoader而不是bulkloader.Loader。

+0

非常感謝.. – zjm1126 2010-06-19 18:44:58

相關問題