def set_user_password(self, user_name, password): if not re.match('[a-zA-Z0-9]*', user_name): raise ValueError('User name can contain only letters and numbers') #TODO: escaped_passord = SqlString(password) escaped_passord.encoding = 'utf-8' self.execute("ALTER USER %s WITH PASSWORD %s;" % (user_name, escaped_passord))
def quote_param(value, dialect='psql'): #print(str(value)[0:70], type(value)) if value is None: return "NULL" if isinstance(value, bytes): return "decode('%s', 'hex')::bytea" % binascii.hexlify(value).decode('ascii') if isinstance(value, memoryview): return "decode('%s', 'hex')::bytea" % binascii.hexlify(bytes(value)).decode('ascii') if isinstance(value, int) or isinstance(value, long): return str(value) if isinstance(value, float): return str(value) if isinstance(value, Decimal): return str(value) if isinstance(value, text): #value = value.replace(':',"\:") value = value.replace('%','%%') value = value.replace('\x00',' ') sql_string_value = SqlString(value) sql_string_value.encoding = 'utf-8' return sql_string_value.getquoted().decode("utf-8") if isinstance(value, str): #value = value.replace(':',"\:") value = value.replace('%','%%') value = value.replace('\x00',' ') sql_string_value = SqlString(value) sql_string_value.encoding = 'utf-8' return sql_string_value.getquoted().decode("utf-8") if isinstance(value, datetime): if dialect == 'oracle': return "timestamp '%s'" % value.isoformat(' ').split('.')[0] else: return "'%s'" % value.isoformat(' ') if isinstance(value, date): return "'%s'" % value.isoformat() if isinstance(value, dict): sql_string_value = SqlString(json.dumps(value)) sql_string_value.encoding = 'utf-8' value = sql_string_value.getquoted().decode("utf-8") value = value.replace('%','%%') return value if isinstance(value, set): quote_func = lambda p: quote_param(p, dialect) return "(" + ','.join(map(quote_func, value)) + ")" if isinstance(value, tuple): quote_func = lambda p: quote_param(p, dialect) return "(" + ','.join(map(quote_func, value)) + ")" if isinstance(value, list): quote_func = lambda p: quote_param(p, dialect) try: return "(" + ','.join(map(quote_func, value)) + ")" except Exception as e: print(e) raise ValueError(value) raise ValueError("unhandled type: %s, %s" % (type(value), value))
def quote_param(value, dialect='psql'): #print(str(value)[0:70], type(value)) if value is None: return "NULL" if isinstance(value, bytes): return "decode('%s', 'hex')::bytea" % binascii.hexlify(value).decode('ascii') if isinstance(value, memoryview): return "decode('%s', 'hex')::bytea" % binascii.hexlify(bytes(value)).decode('ascii') if isinstance(value, int) or isinstance(value, long): return str(value) if isinstance(value, float): return str(value) if isinstance(value, Decimal): return str(value) if isinstance(value, text): #value = value.replace(':',"\:") value = value.replace('%','%%') value = value.replace('\x00',' ') sql_string_value = SqlString(value) sql_string_value.encoding = 'utf-8' return sql_string_value.getquoted().decode("utf-8") if isinstance(value, str): #value = value.replace(':',"\:") value = value.replace('%','%%') value = value.replace('\x00',' ') sql_string_value = SqlString(value) sql_string_value.encoding = 'utf-8' return sql_string_value.getquoted().decode("utf-8") if isinstance(value, datetime): if dialect == 'oracle': return "timestamp '%s'" % value.isoformat(' ').split('.')[0] else: return "'%s'" % value.isoformat(' ') if isinstance(value, date): return "'%s'" % value.isoformat() if isinstance(value, time): return "'%s'" % str(value) if isinstance(value, dict): sql_string_value = SqlString(json.dumps(value)) sql_string_value.encoding = 'utf-8' value = sql_string_value.getquoted().decode("utf-8") value = value.replace('%','%%') return value if isinstance(value, set): quote_func = lambda p: quote_param(p, dialect) return "(" + ','.join(map(quote_func, value)) + ")" if isinstance(value, tuple): quote_func = lambda p: quote_param(p, dialect) return "(" + ','.join(map(quote_func, value)) + ")" if isinstance(value, list): quote_func = lambda p: quote_param(p, dialect) try: return "(" + ','.join(map(quote_func, value)) + ")" except Exception as e: print(e) raise ValueError(value) raise ValueError("unhandled type: %s, %s" % (type(value), value))