""" mysql 距离计算工式 对应sql: round(glength(linestringfromwkb(linestring(asbinary(a), asbinary(b))))) """ # return fn.round(fn.ST_Distance(p1, p2)*100, 6) return fn.round( fn.glength(fn.linestringfromwkb(fn.linestring(p1, p2))) * 100, 6) def ST_Within(p1, xy1, xy2): # envelope(linestring(point(@rlon1, @rlat1), point(@rlon2, @rlat2))) return fn.ST_Within(p1, fn.envelope(fn.linestring(xy1, xy2))) # 注册点类型 MySQLDatabase.register_fields({'point': 'point'}) class RetryMySQLDatabase(RetryOperationalError, MySQLDatabase): pass class TextListWidget(object): def __call__(self, field, **kwargs): html = [] for subfield in field: html.append('%s' % (subfield(**kwargs))) # html.append('</%s>' % self.html_tag) return widgets.HTMLString(''.join(html))
import time from HTMLParser import HTMLParser from peewee import MySQLDatabase, Field, Model, CharField, DecimalField, DateTimeField, IntegerField, BigIntegerField from credentials import MYSQL_USER, MYSQL_PASS, MYSQL_HOST DB_NAME = 'twitter' FILTER_LEVEL = {None: None, 'none': 0, 'low': 1, 'medium': 2, 'high': 3} html_parser = HTMLParser() MySQLDatabase.register_fields({'TINYINT': 'TINYINT'}) database = MySQLDatabase(DB_NAME, host=MYSQL_HOST, port=3306, user=MYSQL_USER, passwd=MYSQL_PASS) # Custom Field definitions class TinyIntField(Field): db_field = 'TINYINT' # Model definitions class BaseModel(Model): class Meta: database = database # Should be ~400 bytes max class Tweet(BaseModel):
def insert_ignore(model_class, **insert): execute_query(model_class, InsertIgnoreQuery, **insert) def insert_update(model_class, **insert): """Only supported by mysql""" execute_query(model_class, InsertUpdateQuery, **insert) # # FIELDS # MySQLDatabase.register_fields({ 'timestamp_updated': 'TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP', }) class TimestampUpdatedField(DateTimeField): """Doesn't work with null=False and primary key """ db_field = 'timestamp_updated' def db_value(self, value): value = datetime.now() return DateTimeField.db_value(self, value) class JSONField(CharField): """VARCHAR fields have max length of 255 (mysql < 5.0.3) or 65,535. The