2016-03-24 16 views
2

MySQL db üzerinde kesiliyorsa ve playhouse modülünden CompressedField kullanmaya çalışırken ben 64k blob boyutuna takılıp alıyorum ikinci testtePeewee CompressedField ben PyMySQL ile Peewee kullanıyorum

from peewee import * 
from playhouse.db_url import connect 
from playhouse.fields import CompressedField 

db = connect("mysql://me:[email protected]/test_db") 

class Compress(Model): 
    name = CharField() 
    cmprssd_data = CompressedField() 

    class Meta: 
     database = db 

db.connect() 
db.create_tables([Compress], safe=True) 

short_str = "".zfill(200) 
di_test1 = {"name": "first", "cmprssd_data": short_str } 
test1 = Compress(**di_test1) 
test1.save() 

long_str = "".zfill(200000000) 
di_test2 = {"name": "second", "cmprssd_data": long_str } 
test2 = Compress(**di_test2) 
test2.save() 

için kesilmiş veri hem MySQL 1073741824 ve pymysql için 'max_allowed_packet' güncelleme çalıştı ama bu bir şey değişmedi. Bu arada, aynı sorun olduğunu düşündüğüm gibi, PickledField ile long_str kullanmak bana bozuk bir boru hatası veriyor.

longblob ile çalışmak için peewee'ye söyleme yolu var mı? ... Ben de thread on the broken pipe problem with pymysql bulundu (veya sorunu? Başka yerden geliyor) ama bu belirli bir alan üzerinde öbek şeyler yapmak için bir Peewee modelini nasıl söyleyeceğimi bilemiyorum

cevap

0

Bu ile yapılabilir Bir custom field:

from peewee import * 
from playhouse.fields import CompressedField 

# tell database that the longblob column type exists 
db = MySQLDatabase('test', host='127.0.0.1', user='root', 
        fields={'longblob': 'longblob'}) 


# create a custom field, in this case subclassing the existing field 
class LongCompressedField(CompressedField): 
    db_field = 'longblob' # <-- this matches our dictionary key above 


class MyModel(Model): 
    val = LongCompressedField() 

    class Meta: 
     db_table = 'test' 
     database = db 


db.connect() 
db.create_table(MyModel, safe=True) 

m = MyModel(val=''.zfill(200000000)) 
m.save() 
+0

Bu mükemmel çalışır, çok teşekkürler! – Silmathoron

İlgili konular