Example #1
0
 def __unicode__(self):
     value = self.value
     if isinstance(value, timedelta):
         if value.microseconds:
             return "INTERVAL '%s' HOUR_MICROSECOND" % timedelta2str(value)
         return "INTERVAL '%s' HOUR_SECOND" % timedelta2str(value)
     return Value.__unicode__(self)
Example #2
0
 def __unicode__(self):
     value = self.value
     if value is None:
         return 'null'
     if isinstance(value, bool):
         return value and '1' or '0'
     if isinstance(value, basestring):
         return self.quote_str(value)
     if isinstance(value, datetime):
         return 'TIMESTAMP ' + self.quote_str(datetime2timestamp(value))
     if isinstance(value, date):
         return 'DATE ' + self.quote_str(str(value))
     if isinstance(value, timedelta):
         return "INTERVAL '%s' HOUR TO SECOND" % timedelta2str(value)
     if PY2:
         if isinstance(value, (int, long, float, Decimal)):
             return str(value)
         if isinstance(value, buffer):
             return "X'%s'" % hexlify(value)
     else:
         if isinstance(value, (int, float, Decimal)):
             return str(value)
         if isinstance(value, bytes):
             return "X'%s'" % hexlify(value).decode('ascii')
     assert False, repr(value)  # pragma: no cover
 def get_pool(provider, *args, **kwargs):
     if 'conv' not in kwargs:
         conv = mysql_converters.conversions.copy()
         if mysql_module_name == 'MySQLdb':
             conv[FIELD_TYPE.BLOB] = [(FLAG.BINARY, buffer)]
             conv[timedelta] = lambda td, c: string_literal(timedelta2str(td), c)
         conv[FIELD_TYPE.TIMESTAMP] = str2datetime
         conv[FIELD_TYPE.DATETIME] = str2datetime
         conv[FIELD_TYPE.TIME] = str2timedelta
         kwargs['conv'] = conv
     if 'charset' not in kwargs:
         kwargs['charset'] = 'utf8'
     kwargs['client_flag'] = kwargs.get('client_flag', 0) | CLIENT.FOUND_ROWS
     return Pool(mysql_module, *args, **kwargs)
Example #4
0
 def get_pool(provider, *args, **kwargs):
     if 'conv' not in kwargs:
         conv = mysql_converters.conversions.copy()
         if mysql_module_name == 'MySQLdb':
             conv[FIELD_TYPE.BLOB] = [(FLAG.BINARY, buffer)]
             conv[timedelta] = lambda td, c: string_literal(timedelta2str(td), c)
         conv[FIELD_TYPE.TIMESTAMP] = str2datetime
         conv[FIELD_TYPE.DATETIME] = str2datetime
         conv[FIELD_TYPE.TIME] = str2timedelta
         kwargs['conv'] = conv
     if 'charset' not in kwargs:
         kwargs['charset'] = 'utf8'
     kwargs['client_flag'] = kwargs.get('client_flag', 0) | CLIENT.FOUND_ROWS
     return Pool(mysql_module, *args, **kwargs)
Example #5
0
 def DATETIME_SUB(builder, expr, delta):
     if isinstance(delta, timedelta):
         return '(', builder(expr), " - INTERVAL '", timedelta2str(
             delta), "' DAY TO SECOND)"
     return '(', builder(expr), ' - ', builder(delta), ')'
Example #6
0
 def DATE_ADD(builder, expr, delta):
     if isinstance(delta, timedelta):
         return '(', builder(expr), " + INTERVAL '", timedelta2str(
             delta), "' DAY TO SECOND)"
     return '(', builder(expr), ' + ', builder(delta), ')'
Example #7
0
 def encode_timedelta(val, encoders=None):
     return string_literal(timedelta2str(val), encoders)
Example #8
0
 def DATETIME_SUB(builder, expr, delta):
     if isinstance(delta, timedelta):
         return 'DATE_SUB(', builder(expr), ", INTERVAL '", timedelta2str(
             delta), "' HOUR_SECOND)"
     return 'SUBTIME(', builder(expr), ', ', builder(delta), ')'
try:
    import MySQLdb as mysql_module
except ImportError:
    try:
        import pymysql as mysql_module
    except ImportError:
        raise ImportError('No module named MySQLdb or pymysql found')
    else:
        import pymysql.converters as mysql_converters
        from pymysql.constants import FIELD_TYPE, FLAG, CLIENT
        if PY2:
            mysql_converters.encoders[
                buffer] = lambda val: mysql_converters.escape_str(str(val))
        mysql_converters.encoders[
            timedelta] = lambda val: mysql_converters.escape_str(
                timedelta2str(val))
        mysql_module_name = 'pymysql'
else:
    import MySQLdb.converters as mysql_converters
    from MySQLdb.constants import FIELD_TYPE, FLAG, CLIENT
    mysql_module_name = 'MySQLdb'
    from MySQLdb import string_literal

from pony.orm import core, dbschema, dbapiprovider
from pony.orm.core import log_orm, OperationalError
from pony.orm.dbapiprovider import DBAPIProvider, Pool, get_version_tuple, wrap_dbapi_exceptions
from pony.orm.sqltranslation import SQLTranslator
from pony.orm.sqlbuilding import SQLBuilder, join
from pony.utils import throw
from pony.converting import str2timedelta, timedelta2str
 def DATETIME_SUB(builder, expr, delta):
     if isinstance(delta, timedelta):
         return '(', builder(expr), " - INTERVAL '", timedelta2str(delta), "' HOUR TO SECOND)"
     return '(', builder(expr), ' - ', builder(delta), ')'
 def DATE_ADD(builder, expr, delta):
     if isinstance(delta, timedelta):
         return '(', builder(expr), " + INTERVAL '", timedelta2str(delta), "' HOUR TO SECOND)"
     return '(', builder(expr), ' + ', builder(delta), ')'
Example #12
0
    from MySQLdb import string_literal
    import MySQLdb.converters as mysql_converters
    from MySQLdb.constants import FIELD_TYPE, FLAG, CLIENT
    mysql_module_name = 'MySQLdb'
except ImportError:
    try:
        import pymysql as mysql_module
    except ImportError:
        raise ImportError('No module named MySQLdb or pymysql found')
    import pymysql.converters as mysql_converters
    from pymysql.constants import FIELD_TYPE, FLAG, CLIENT
    if PY2:
        mysql_converters.encoders[
            buffer] = lambda val: mysql_converters.escape_str(str(val))
    mysql_converters.encoders[
        timedelta] = lambda val: mysql_converters.escape_str(timedelta2str(val)
                                                             )
    mysql_module_name = 'pymysql'

from pony.orm import core, dbschema, dbapiprovider
from pony.orm.core import log_orm, OperationalError
from pony.orm.dbapiprovider import DBAPIProvider, Pool, get_version_tuple, wrap_dbapi_exceptions
from pony.orm.sqltranslation import SQLTranslator
from pony.orm.sqlbuilding import SQLBuilder, join
from pony.utils import throw
from pony.converting import str2timedelta, timedelta2str


class MySQLColumn(dbschema.Column):
    auto_template = '%(type)s PRIMARY KEY AUTO_INCREMENT'
 def DATETIME_SUB(builder, expr, delta):
     if isinstance(delta, timedelta):
         return 'DATE_SUB(', builder(expr), ", INTERVAL '", timedelta2str(delta), "' HOUR_SECOND)"
     return 'SUBTIME(', builder(expr), ', ', builder(delta), ')'
from datetime import datetime, date, time, timedelta
from uuid import UUID

import warnings
warnings.filterwarnings('ignore', '^Table.+already exists$', Warning, '^pony\\.orm\\.dbapiprovider$')

try: import MySQLdb as mysql_module
except ImportError:
    try: import pymysql as mysql_module
    except ImportError: raise ImportError('No module named MySQLdb or pymysql found')
    else:
        import pymysql.converters as mysql_converters
        from pymysql.constants import FIELD_TYPE, FLAG, CLIENT
        if PY2:
            mysql_converters.encoders[buffer] = lambda val: mysql_converters.escape_str(str(val))
        mysql_converters.encoders[timedelta] = lambda val: mysql_converters.escape_str(timedelta2str(val))
        mysql_module_name = 'pymysql'
else:
    import MySQLdb.converters as mysql_converters
    from MySQLdb.constants import FIELD_TYPE, FLAG, CLIENT
    mysql_module_name = 'MySQLdb'
    from MySQLdb import string_literal

from pony.orm import core, dbschema, dbapiprovider
from pony.orm.core import log_orm, OperationalError
from pony.orm.dbapiprovider import DBAPIProvider, Pool, get_version_tuple, wrap_dbapi_exceptions
from pony.orm.sqltranslation import SQLTranslator
from pony.orm.sqlbuilding import SQLBuilder, join
from pony.utils import throw
from pony.converting import str2timedelta, timedelta2str